## @file
# Core CI configuration for ArmVirtPkg
#
# ArmVirtPkg is part of Platform Ci for builds so this is only
# used for code analysis.
#
# Copyright (c) Microsoft Corporation
# Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>
# Copyright (c) 2020 - 2022, ARM Limited. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
##
{
    ## options defined .pytool/Plugin/LicenseCheck
    "LicenseCheck": {
        "IgnoreFiles": []
    },
    "EccCheck": {
        ## Exception sample looks like below:
        ## "ExceptionList": [
        ##     "<ErrorID>", "<KeyWord>"
        ## ]
        "ExceptionList": [
        ],
        ## Both file path and directory path are accepted.
        "IgnoreFiles": [
            "Library/PlatformBootManagerLib/PlatformBm.c"
        ]
    },
    ## options defined .pytool/Plugin/CompilerPlugin
    "CompilerPlugin": {
        "DscPath": "" # Don't support this test
    },

    ## options defined .pytool/Plugin/HostUnitTestCompilerPlugin
    "HostUnitTestCompilerPlugin": {
        "DscPath": "" # Don't support this test
    },

    ## options defined .pytool/Plugin/CharEncodingCheck
    "CharEncodingCheck": {
        "IgnoreFiles": []
    },

    ## options defined .pytool/Plugin/DependencyCheck
    "DependencyCheck": {
        "AcceptableDependencies": [
            "MdePkg/MdePkg.dec",
            "MdeModulePkg/MdeModulePkg.dec",
            "ArmVirtPkg/ArmVirtPkg.dec",
            "DynamicTablesPkg/DynamicTablesPkg.dec",
            "NetworkPkg/NetworkPkg.dec",
            "ArmPkg/ArmPkg.dec",
            "OvmfPkg/OvmfPkg.dec",
            "EmbeddedPkg/EmbeddedPkg.dec",
            "ArmPlatformPkg/ArmPlatformPkg.dec",
            "PcAtChipsetPkg/PcAtChipsetPkg.dec",
            "SecurityPkg/SecurityPkg.dec",
            "ShellPkg/ShellPkg.dec"  #Is this ok?
        ],
        # For host based unit tests
        "AcceptableDependencies-HOST_APPLICATION":[
            "UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec"
        ],
        # For UEFI shell based apps
        "AcceptableDependencies-UEFI_APPLICATION":[

        ],
        "IgnoreInf": []
    },

    ## options defined .pytool/Plugin/DscCompleteCheck
    "DscCompleteCheck": {
        "IgnoreInf": [""],
        "DscPath": ""  # Don't support this test
    },

    ## options defined .pytool/Plugin/HostUnitTestDscCompleteCheck
    "HostUnitTestDscCompleteCheck": {
        "IgnoreInf": [""],
        "DscPath": "" # Don't support this test
    },

    ## options defined .pytool/Plugin/GuidCheck
    "GuidCheck": {
        "IgnoreGuidName": [],
        "IgnoreGuidValue": [],
        "IgnoreFoldersAndFiles": [],
        "IgnoreDuplicates": [],
    },

    ## options defined .pytool/Plugin/LibraryClassCheck
    "LibraryClassCheck": {
        "IgnoreHeaderFile": []
    },

    ## options defined .pytool/Plugin/SpellCheck
    "SpellCheck": {
        "AuditOnly": True,
        "IgnoreFiles": [],           # use gitignore syntax to ignore errors in matching files
        "ExtendWords": [
            "acpiview",
            "armltd",
            "ssdts",
            "setjump",
            "plong",
            "lparam",
            "lpdword",
            "lpthread",
            "lresult",
            "bootable",
            "bsymbolic",
            "endiannness",
            "fvmain",
            "multiboot",
            "qemu's",
            "ramdisk",
            "ramfb",
            "unbootable",
            "virt's",
            "werror",
            "xenio",
            "kvmtool",
            "cloudhv"
        ],           # words to extend to the dictionary for this package
        "IgnoreStandardPaths": [],   # Standard Plugin defined paths that should be ignore
        "AdditionalIncludePaths": [] # Additional paths to spell check (wildcards supported)
    },

    "DebugMacroCheck": {
      "StringSubstitutions": {
          # DynamicTablesPkg/Include/ConfigurationManagerObject.h
          # Reason: Expansion of macro that contains a print specifier.
          "FMT_CM_OBJECT_ID": "0x%lx"
      }
    }
}
