blob: a3941d13157f6ea940acf07b2bf4c6479aea309e [file] [log] [blame]
# @file stuart_codeql.py
#
# Exports functions commonly needed for Stuart-based platforms to easily
# enable CodeQL in their platform build.
#
# Copyright (c) Microsoft Corporation. All rights reserved.
# SPDX-License-Identifier: BSD-2-Clause-Patent
##
from edk2toolext.environment.uefi_build import UefiBuilder
from edk2toollib.utility_functions import GetHostInfo
from argparse import ArgumentParser, Namespace
from typing import Tuple
def add_command_line_option(parser: ArgumentParser) -> None:
"""Adds the CodeQL command to the platform command line options.
Args:
parser (ArgumentParser): The argument parser used in this build.
"""
parser.add_argument(
'--codeql',
dest='codeql',
action='store_true',
default=False,
help="Optional - Produces CodeQL results from the build. See "
"BaseTools/Plugin/CodeQL/Readme.md for more info.")
def get_scopes(codeql_enabled: bool) -> Tuple[str]:
"""Returns the active CodeQL scopes for this build.
Args:
codeql_enabled (bool): Whether CodeQL is enabled.
Returns:
Tuple[str]: A tuple of strings containing scopes that enable the
CodeQL plugin.
"""
active_scopes = ()
if codeql_enabled:
if GetHostInfo().os == "Linux":
active_scopes += ("codeql-linux-ext-dep",)
else:
active_scopes += ("codeql-windows-ext-dep",)
active_scopes += ("codeql-build", "codeql-analyze")
return active_scopes
def is_codeql_enabled_on_command_line(args: Namespace) -> bool:
"""Returns whether CodeQL was enabled on the command line.
Args:
args (Namespace): Object holding a string representation of command
line arguments.
Returns:
bool: True if CodeQL is enabled on the command line. Otherwise, false.
"""
return args.codeql
def set_audit_only_mode(uefi_builder: UefiBuilder) -> None:
"""Configures the CodeQL plugin to run in audit only mode.
Args:
uefi_builder (UefiBuilder): The UefiBuilder object for this platform
build.
"""
uefi_builder.env.SetValue(
"STUART_CODEQL_AUDIT_ONLY",
"true",
"Platform Defined")