From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.120; helo=mga04.intel.com; envelope-from=jaben.carsey@intel.com; receiver=edk2-devel@lists.01.org Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id A1B062007E817 for ; Fri, 4 May 2018 13:25:24 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 May 2018 13:25:24 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,363,1520924400"; d="scan'208";a="53273648" Received: from jcarsey-desk1.amr.corp.intel.com ([10.7.159.144]) by orsmga001.jf.intel.com with ESMTP; 04 May 2018 13:25:23 -0700 From: Jaben Carsey To: edk2-devel@lists.01.org Cc: Liming Gao , Yonghong Zhu , Laszlo Ersek Date: Fri, 4 May 2018 13:25:16 -0700 Message-Id: <538a46f357b28e3b84e1f94c4519b47e502ec610.1525465447.git.jaben.carsey@intel.com> X-Mailer: git-send-email 2.16.2.windows.1 In-Reply-To: References: Subject: [PATCH v3 1/1] BaseTools: Ecc - add dict for config file to internal translation X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 20:25:24 -0000 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 --- 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 b5b583be8c4a..d305182a2666 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.16.2.windows.1