# @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")