]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Ecc/Configuration.py
BaseTools: Ecc - add dict for config file to internal translation
[mirror_edk2.git] / BaseTools / Source / Python / Ecc / Configuration.py
index b5b583be8c4af8dca3d229570e807f49445fdc2c..fee7ecb9703d18d250bf878315e77c2acca0eb68 100644 (file)
@@ -1,7 +1,7 @@
 ## @file\r
 # This file is used to define class Configuration\r
 #\r
-# Copyright (c) 2008 - 2017, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>\r
 # This program and the accompanying materials\r
 # are licensed and made available under the terms and conditions of the BSD License\r
 # which accompanies this distribution.  The full text of the license may be found at\r
@@ -20,6 +20,109 @@ from Common.DataType import *
 from Common.String import *\r
 from Common.LongFilePathSupport import OpenLongFilePath as open\r
 \r
+_ConfigFileToInternalTranslation = {\r
+    # not same\r
+    "ModifierList":"ModifierSet",\r
+\r
+    # same\r
+    # please keep this in correct alphabetical order.\r
+    "AutoCorrect":"AutoCorrect",\r
+    "BinaryExtList":"BinaryExtList",\r
+    "CFunctionLayoutCheckAll":"CFunctionLayoutCheckAll",\r
+    "CFunctionLayoutCheckDataDeclaration":"CFunctionLayoutCheckDataDeclaration",\r
+    "CFunctionLayoutCheckFunctionBody":"CFunctionLayoutCheckFunctionBody",\r
+    "CFunctionLayoutCheckFunctionName":"CFunctionLayoutCheckFunctionName",\r
+    "CFunctionLayoutCheckFunctionPrototype":"CFunctionLayoutCheckFunctionPrototype",\r
+    "CFunctionLayoutCheckNoInitOfVariable":"CFunctionLayoutCheckNoInitOfVariable",\r
+    "CFunctionLayoutCheckNoStatic":"CFunctionLayoutCheckNoStatic",\r
+    "CFunctionLayoutCheckOptionalFunctionalModifier":"CFunctionLayoutCheckOptionalFunctionalModifier",\r
+    "CFunctionLayoutCheckReturnType":"CFunctionLayoutCheckReturnType",\r
+    "CheckAll":"CheckAll",\r
+    "Copyright":"Copyright",\r
+    "DeclarationDataTypeCheckAll":"DeclarationDataTypeCheckAll",\r
+    "DeclarationDataTypeCheckEFIAPIModifier":"DeclarationDataTypeCheckEFIAPIModifier",\r
+    "DeclarationDataTypeCheckEnumeratedType":"DeclarationDataTypeCheckEnumeratedType",\r
+    "DeclarationDataTypeCheckInOutModifier":"DeclarationDataTypeCheckInOutModifier",\r
+    "DeclarationDataTypeCheckNoUseCType":"DeclarationDataTypeCheckNoUseCType",\r
+    "DeclarationDataTypeCheckSameStructure":"DeclarationDataTypeCheckSameStructure",\r
+    "DeclarationDataTypeCheckStructureDeclaration":"DeclarationDataTypeCheckStructureDeclaration",\r
+    "DeclarationDataTypeCheckUnionType":"DeclarationDataTypeCheckUnionType",\r
+    "DoxygenCheckAll":"DoxygenCheckAll",\r
+    "DoxygenCheckCommand":"DoxygenCheckCommand",\r
+    "DoxygenCheckCommentDescription":"DoxygenCheckCommentDescription",\r
+    "DoxygenCheckCommentFormat":"DoxygenCheckCommentFormat",\r
+    "DoxygenCheckFileHeader":"DoxygenCheckFileHeader",\r
+    "DoxygenCheckFunctionHeader":"DoxygenCheckFunctionHeader",\r
+    "GeneralCheckAll":"GeneralCheckAll",\r
+    "GeneralCheckCarriageReturn":"GeneralCheckCarriageReturn",\r
+    "GeneralCheckFileExistence":"GeneralCheckFileExistence",\r
+    "GeneralCheckIndentation":"GeneralCheckIndentation",\r
+    "GeneralCheckIndentationWidth":"GeneralCheckIndentationWidth",\r
+    "GeneralCheckLine":"GeneralCheckLine",\r
+    "GeneralCheckLineWidth":"GeneralCheckLineWidth",\r
+    "GeneralCheckNoProgma":"GeneralCheckNoProgma",\r
+    "GeneralCheckNoTab":"GeneralCheckNoTab",\r
+    "GeneralCheckNo_Asm":"GeneralCheckNo_Asm",\r
+    "GeneralCheckNonAcsii":"GeneralCheckNonAcsii",\r
+    "GeneralCheckTabWidth":"GeneralCheckTabWidth",\r
+    "GeneralCheckUni":"GeneralCheckUni",\r
+    "HeaderCheckAll":"HeaderCheckAll",\r
+    "HeaderCheckCFileCommentLicenseFormat":"HeaderCheckCFileCommentLicenseFormat",\r
+    "HeaderCheckCFileCommentReferenceFormat":"HeaderCheckCFileCommentReferenceFormat",\r
+    "HeaderCheckCFileCommentStartSpacesNum":"HeaderCheckCFileCommentStartSpacesNum",\r
+    "HeaderCheckFile":"HeaderCheckFile",\r
+    "HeaderCheckFileCommentEnd":"HeaderCheckFileCommentEnd",\r
+    "HeaderCheckFunction":"HeaderCheckFunction",\r
+    "IncludeFileCheckAll":"IncludeFileCheckAll",\r
+    "IncludeFileCheckData":"IncludeFileCheckData",\r
+    "IncludeFileCheckIfndefStatement":"IncludeFileCheckIfndefStatement",\r
+    "IncludeFileCheckSameName":"IncludeFileCheckSameName",\r
+    "MetaDataFileCheckAll":"MetaDataFileCheckAll",\r
+    "MetaDataFileCheckBinaryInfInFdf":"MetaDataFileCheckBinaryInfInFdf",\r
+    "MetaDataFileCheckGenerateFileList":"MetaDataFileCheckGenerateFileList",\r
+    "MetaDataFileCheckGuidDuplicate":"MetaDataFileCheckGuidDuplicate",\r
+    "MetaDataFileCheckLibraryDefinedInDec":"MetaDataFileCheckLibraryDefinedInDec",\r
+    "MetaDataFileCheckLibraryInstance":"MetaDataFileCheckLibraryInstance",\r
+    "MetaDataFileCheckLibraryInstanceDependent":"MetaDataFileCheckLibraryInstanceDependent",\r
+    "MetaDataFileCheckLibraryInstanceOrder":"MetaDataFileCheckLibraryInstanceOrder",\r
+    "MetaDataFileCheckLibraryNoUse":"MetaDataFileCheckLibraryNoUse",\r
+    "MetaDataFileCheckModuleFileGuidDuplication":"MetaDataFileCheckModuleFileGuidDuplication",\r
+    "MetaDataFileCheckModuleFileGuidFormat":"MetaDataFileCheckModuleFileGuidFormat",\r
+    "MetaDataFileCheckModuleFileNoUse":"MetaDataFileCheckModuleFileNoUse",\r
+    "MetaDataFileCheckModuleFilePcdFormat":"MetaDataFileCheckModuleFilePcdFormat",\r
+    "MetaDataFileCheckModuleFilePpiFormat":"MetaDataFileCheckModuleFilePpiFormat",\r
+    "MetaDataFileCheckModuleFileProtocolFormat":"MetaDataFileCheckModuleFileProtocolFormat",\r
+    "MetaDataFileCheckPathName":"MetaDataFileCheckPathName",\r
+    "MetaDataFileCheckPathOfGenerateFileList":"MetaDataFileCheckPathOfGenerateFileList",\r
+    "MetaDataFileCheckPcdDuplicate":"MetaDataFileCheckPcdDuplicate",\r
+    "MetaDataFileCheckPcdFlash":"MetaDataFileCheckPcdFlash",\r
+    "MetaDataFileCheckPcdNoUse":"MetaDataFileCheckPcdNoUse",\r
+    "MetaDataFileCheckPcdType":"MetaDataFileCheckPcdType",\r
+    "NamingConventionCheckAll":"NamingConventionCheckAll",\r
+    "NamingConventionCheckDefineStatement":"NamingConventionCheckDefineStatement",\r
+    "NamingConventionCheckFunctionName":"NamingConventionCheckFunctionName",\r
+    "NamingConventionCheckIfndefStatement":"NamingConventionCheckIfndefStatement",\r
+    "NamingConventionCheckPathName":"NamingConventionCheckPathName",\r
+    "NamingConventionCheckSingleCharacterVariable":"NamingConventionCheckSingleCharacterVariable",\r
+    "NamingConventionCheckTypedefStatement":"NamingConventionCheckTypedefStatement",\r
+    "NamingConventionCheckVariableName":"NamingConventionCheckVariableName",\r
+    "PredicateExpressionCheckAll":"PredicateExpressionCheckAll",\r
+    "PredicateExpressionCheckBooleanValue":"PredicateExpressionCheckBooleanValue",\r
+    "PredicateExpressionCheckComparisonNullType":"PredicateExpressionCheckComparisonNullType",\r
+    "PredicateExpressionCheckNonBooleanOperator":"PredicateExpressionCheckNonBooleanOperator",\r
+    "ScanOnlyDirList":"ScanOnlyDirList",\r
+    "SkipDirList":"SkipDirList",\r
+    "SkipFileList":"SkipFileList",\r
+    "SmmCommParaCheckAll":"SmmCommParaCheckAll",\r
+    "SmmCommParaCheckBufferType":"SmmCommParaCheckBufferType",\r
+    "SpaceCheckAll":"SpaceCheckAll",\r
+    "SpellingCheckAll":"SpellingCheckAll",\r
+    "UniCheckAll":"UniCheckAll",\r
+    "UniCheckHelpInfo":"UniCheckHelpInfo",\r
+    "UniCheckPCDInfo":"UniCheckPCDInfo",\r
+    "Version":"Version"\r
+    }\r
+\r
 ## Configuration\r
 #\r
 # This class is used to define all items in configuration file\r
@@ -297,9 +400,10 @@ class Configuration(object):
             Line = CleanString(Line)\r
             if Line != '':\r
                 List = GetSplitValueList(Line, TAB_EQUAL_SPLIT)\r
-                if List[0] not in self.__dict__:\r
+                if List[0] not in _ConfigFileToInternalTranslation:\r
                     ErrorMsg = "Invalid configuration option '%s' was found" % List[0]\r
                     EdkLogger.error("Ecc", EdkLogger.ECC_ERROR, ErrorMsg, File = Filepath, Line = LineNo)\r
+                assert _ConfigFileToInternalTranslation[List[0]] in self.__dict__\r
                 if List[0] == 'ModifierList':\r
                     List[1] = GetSplitValueList(List[1], TAB_COMMA_SPLIT)\r
                 if List[0] == 'MetaDataFileCheckPathOfGenerateFileList' and List[1] == "":\r
@@ -312,9 +416,21 @@ class Configuration(object):
                     List[1] = GetSplitValueList(List[1], TAB_COMMA_SPLIT)\r
                 if List[0] == 'Copyright':\r
                     List[1] = GetSplitValueList(List[1], TAB_COMMA_SPLIT)\r
-                self.__dict__[List[0]] = List[1]\r
+                self.__dict__[_ConfigFileToInternalTranslation[List[0]]] = List[1]\r
 \r
     def ShowMe(self):\r
         print self.Filename\r
         for Key in self.__dict__.keys():\r
             print Key, '=', self.__dict__[Key]\r
+\r
+#\r
+# test that our dict and out class still match in contents.\r
+#\r
+if __name__ == '__main__':\r
+    myconfig = Configuration("BaseTools\Source\Python\Ecc\config.ini")\r
+    for each in myconfig.__dict__:\r
+        if each == "Filename":\r
+            continue\r
+        assert each in _ConfigFileToInternalTranslation.values()\r
+    for each in _ConfigFileToInternalTranslation.values():\r
+        assert each in myconfig.__dict__\r