From a4c35dedd92f2b9b7c68e9bd0490bc14b96457ef Mon Sep 17 00:00:00 2001 From: "Carsey, Jaben" Date: Sat, 5 May 2018 04:25:16 +0800 Subject: [PATCH] BaseTools: Ecc - add dict for config file to internal translation Commit eece4292acc80 changed a variable name, which was tied directly to a config file entry. This seperates the internal variable names from the config file entries by having the internal dict accessed through a translation of key words. added a test when this is run straight from command line. Cc: Liming Gao Cc: Yonghong Zhu Cc: Laszlo Ersek Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jaben Carsey Tested-by: Laszlo Ersek Reviewed-by: Laszlo Ersek Reviewed-by: Yonghong Zhu --- BaseTools/Source/Python/Ecc/Configuration.py | 122 ++++++++++++++++++- 1 file changed, 119 insertions(+), 3 deletions(-) diff --git a/BaseTools/Source/Python/Ecc/Configuration.py b/BaseTools/Source/Python/Ecc/Configuration.py index b5b583be8c..fee7ecb970 100644 --- a/BaseTools/Source/Python/Ecc/Configuration.py +++ b/BaseTools/Source/Python/Ecc/Configuration.py @@ -1,7 +1,7 @@ ## @file # This file is used to define class Configuration # -# Copyright (c) 2008 - 2017, Intel Corporation. All rights reserved.
+# Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.
# This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License # which accompanies this distribution. The full text of the license may be found at @@ -20,6 +20,109 @@ from Common.DataType import * from Common.String import * from Common.LongFilePathSupport import OpenLongFilePath as open +_ConfigFileToInternalTranslation = { + # not same + "ModifierList":"ModifierSet", + + # same + # please keep this in correct alphabetical order. + "AutoCorrect":"AutoCorrect", + "BinaryExtList":"BinaryExtList", + "CFunctionLayoutCheckAll":"CFunctionLayoutCheckAll", + "CFunctionLayoutCheckDataDeclaration":"CFunctionLayoutCheckDataDeclaration", + "CFunctionLayoutCheckFunctionBody":"CFunctionLayoutCheckFunctionBody", + "CFunctionLayoutCheckFunctionName":"CFunctionLayoutCheckFunctionName", + "CFunctionLayoutCheckFunctionPrototype":"CFunctionLayoutCheckFunctionPrototype", + "CFunctionLayoutCheckNoInitOfVariable":"CFunctionLayoutCheckNoInitOfVariable", + "CFunctionLayoutCheckNoStatic":"CFunctionLayoutCheckNoStatic", + "CFunctionLayoutCheckOptionalFunctionalModifier":"CFunctionLayoutCheckOptionalFunctionalModifier", + "CFunctionLayoutCheckReturnType":"CFunctionLayoutCheckReturnType", + "CheckAll":"CheckAll", + "Copyright":"Copyright", + "DeclarationDataTypeCheckAll":"DeclarationDataTypeCheckAll", + "DeclarationDataTypeCheckEFIAPIModifier":"DeclarationDataTypeCheckEFIAPIModifier", + "DeclarationDataTypeCheckEnumeratedType":"DeclarationDataTypeCheckEnumeratedType", + "DeclarationDataTypeCheckInOutModifier":"DeclarationDataTypeCheckInOutModifier", + "DeclarationDataTypeCheckNoUseCType":"DeclarationDataTypeCheckNoUseCType", + "DeclarationDataTypeCheckSameStructure":"DeclarationDataTypeCheckSameStructure", + "DeclarationDataTypeCheckStructureDeclaration":"DeclarationDataTypeCheckStructureDeclaration", + "DeclarationDataTypeCheckUnionType":"DeclarationDataTypeCheckUnionType", + "DoxygenCheckAll":"DoxygenCheckAll", + "DoxygenCheckCommand":"DoxygenCheckCommand", + "DoxygenCheckCommentDescription":"DoxygenCheckCommentDescription", + "DoxygenCheckCommentFormat":"DoxygenCheckCommentFormat", + "DoxygenCheckFileHeader":"DoxygenCheckFileHeader", + "DoxygenCheckFunctionHeader":"DoxygenCheckFunctionHeader", + "GeneralCheckAll":"GeneralCheckAll", + "GeneralCheckCarriageReturn":"GeneralCheckCarriageReturn", + "GeneralCheckFileExistence":"GeneralCheckFileExistence", + "GeneralCheckIndentation":"GeneralCheckIndentation", + "GeneralCheckIndentationWidth":"GeneralCheckIndentationWidth", + "GeneralCheckLine":"GeneralCheckLine", + "GeneralCheckLineWidth":"GeneralCheckLineWidth", + "GeneralCheckNoProgma":"GeneralCheckNoProgma", + "GeneralCheckNoTab":"GeneralCheckNoTab", + "GeneralCheckNo_Asm":"GeneralCheckNo_Asm", + "GeneralCheckNonAcsii":"GeneralCheckNonAcsii", + "GeneralCheckTabWidth":"GeneralCheckTabWidth", + "GeneralCheckUni":"GeneralCheckUni", + "HeaderCheckAll":"HeaderCheckAll", + "HeaderCheckCFileCommentLicenseFormat":"HeaderCheckCFileCommentLicenseFormat", + "HeaderCheckCFileCommentReferenceFormat":"HeaderCheckCFileCommentReferenceFormat", + "HeaderCheckCFileCommentStartSpacesNum":"HeaderCheckCFileCommentStartSpacesNum", + "HeaderCheckFile":"HeaderCheckFile", + "HeaderCheckFileCommentEnd":"HeaderCheckFileCommentEnd", + "HeaderCheckFunction":"HeaderCheckFunction", + "IncludeFileCheckAll":"IncludeFileCheckAll", + "IncludeFileCheckData":"IncludeFileCheckData", + "IncludeFileCheckIfndefStatement":"IncludeFileCheckIfndefStatement", + "IncludeFileCheckSameName":"IncludeFileCheckSameName", + "MetaDataFileCheckAll":"MetaDataFileCheckAll", + "MetaDataFileCheckBinaryInfInFdf":"MetaDataFileCheckBinaryInfInFdf", + "MetaDataFileCheckGenerateFileList":"MetaDataFileCheckGenerateFileList", + "MetaDataFileCheckGuidDuplicate":"MetaDataFileCheckGuidDuplicate", + "MetaDataFileCheckLibraryDefinedInDec":"MetaDataFileCheckLibraryDefinedInDec", + "MetaDataFileCheckLibraryInstance":"MetaDataFileCheckLibraryInstance", + "MetaDataFileCheckLibraryInstanceDependent":"MetaDataFileCheckLibraryInstanceDependent", + "MetaDataFileCheckLibraryInstanceOrder":"MetaDataFileCheckLibraryInstanceOrder", + "MetaDataFileCheckLibraryNoUse":"MetaDataFileCheckLibraryNoUse", + "MetaDataFileCheckModuleFileGuidDuplication":"MetaDataFileCheckModuleFileGuidDuplication", + "MetaDataFileCheckModuleFileGuidFormat":"MetaDataFileCheckModuleFileGuidFormat", + "MetaDataFileCheckModuleFileNoUse":"MetaDataFileCheckModuleFileNoUse", + "MetaDataFileCheckModuleFilePcdFormat":"MetaDataFileCheckModuleFilePcdFormat", + "MetaDataFileCheckModuleFilePpiFormat":"MetaDataFileCheckModuleFilePpiFormat", + "MetaDataFileCheckModuleFileProtocolFormat":"MetaDataFileCheckModuleFileProtocolFormat", + "MetaDataFileCheckPathName":"MetaDataFileCheckPathName", + "MetaDataFileCheckPathOfGenerateFileList":"MetaDataFileCheckPathOfGenerateFileList", + "MetaDataFileCheckPcdDuplicate":"MetaDataFileCheckPcdDuplicate", + "MetaDataFileCheckPcdFlash":"MetaDataFileCheckPcdFlash", + "MetaDataFileCheckPcdNoUse":"MetaDataFileCheckPcdNoUse", + "MetaDataFileCheckPcdType":"MetaDataFileCheckPcdType", + "NamingConventionCheckAll":"NamingConventionCheckAll", + "NamingConventionCheckDefineStatement":"NamingConventionCheckDefineStatement", + "NamingConventionCheckFunctionName":"NamingConventionCheckFunctionName", + "NamingConventionCheckIfndefStatement":"NamingConventionCheckIfndefStatement", + "NamingConventionCheckPathName":"NamingConventionCheckPathName", + "NamingConventionCheckSingleCharacterVariable":"NamingConventionCheckSingleCharacterVariable", + "NamingConventionCheckTypedefStatement":"NamingConventionCheckTypedefStatement", + "NamingConventionCheckVariableName":"NamingConventionCheckVariableName", + "PredicateExpressionCheckAll":"PredicateExpressionCheckAll", + "PredicateExpressionCheckBooleanValue":"PredicateExpressionCheckBooleanValue", + "PredicateExpressionCheckComparisonNullType":"PredicateExpressionCheckComparisonNullType", + "PredicateExpressionCheckNonBooleanOperator":"PredicateExpressionCheckNonBooleanOperator", + "ScanOnlyDirList":"ScanOnlyDirList", + "SkipDirList":"SkipDirList", + "SkipFileList":"SkipFileList", + "SmmCommParaCheckAll":"SmmCommParaCheckAll", + "SmmCommParaCheckBufferType":"SmmCommParaCheckBufferType", + "SpaceCheckAll":"SpaceCheckAll", + "SpellingCheckAll":"SpellingCheckAll", + "UniCheckAll":"UniCheckAll", + "UniCheckHelpInfo":"UniCheckHelpInfo", + "UniCheckPCDInfo":"UniCheckPCDInfo", + "Version":"Version" + } + ## Configuration # # This class is used to define all items in configuration file @@ -297,9 +400,10 @@ class Configuration(object): Line = CleanString(Line) if Line != '': List = GetSplitValueList(Line, TAB_EQUAL_SPLIT) - if List[0] not in self.__dict__: + if List[0] not in _ConfigFileToInternalTranslation: ErrorMsg = "Invalid configuration option '%s' was found" % List[0] EdkLogger.error("Ecc", EdkLogger.ECC_ERROR, ErrorMsg, File = Filepath, Line = LineNo) + assert _ConfigFileToInternalTranslation[List[0]] in self.__dict__ if List[0] == 'ModifierList': List[1] = GetSplitValueList(List[1], TAB_COMMA_SPLIT) if List[0] == 'MetaDataFileCheckPathOfGenerateFileList' and List[1] == "": @@ -312,9 +416,21 @@ class Configuration(object): List[1] = GetSplitValueList(List[1], TAB_COMMA_SPLIT) if List[0] == 'Copyright': List[1] = GetSplitValueList(List[1], TAB_COMMA_SPLIT) - self.__dict__[List[0]] = List[1] + self.__dict__[_ConfigFileToInternalTranslation[List[0]]] = List[1] def ShowMe(self): print self.Filename for Key in self.__dict__.keys(): print Key, '=', self.__dict__[Key] + +# +# test that our dict and out class still match in contents. +# +if __name__ == '__main__': + myconfig = Configuration("BaseTools\Source\Python\Ecc\config.ini") + for each in myconfig.__dict__: + if each == "Filename": + continue + assert each in _ConfigFileToInternalTranslation.values() + for each in _ConfigFileToInternalTranslation.values(): + assert each in myconfig.__dict__ -- 2.39.2