public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: Jaben Carsey <jaben.carsey@intel.com>
To: edk2-devel@lists.01.org
Cc: Liming Gao <liming.gao@intel.com>,
	Yonghong Zhu <yonghong.zhu@intel.com>,
	Laszlo Ersek <lersek@redhat.com>
Subject: [PATCH v3 1/1] BaseTools: Ecc - add dict for config file to internal translation
Date: Fri,  4 May 2018 13:25:16 -0700	[thread overview]
Message-ID: <538a46f357b28e3b84e1f94c4519b47e502ec610.1525465447.git.jaben.carsey@intel.com> (raw)
In-Reply-To: <cover.1525465447.git.jaben.carsey@intel.com>

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 <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Jaben Carsey <jaben.carsey@intel.com>
---
 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.<BR>
+# Copyright (c) 2008 - 2018, Intel Corporation. All rights reserved.<BR>
 # 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



       reply	other threads:[~2018-05-04 20:25 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <cover.1525465447.git.jaben.carsey@intel.com>
2018-05-04 20:25 ` Jaben Carsey [this message]
2018-05-04 21:44   ` [PATCH v3 1/1] BaseTools: Ecc - add dict for config file to internal translation Laszlo Ersek
2018-05-04 21:47     ` Carsey, Jaben
2018-05-04 22:42       ` Laszlo Ersek
2018-05-05  1:21         ` Zhu, Yonghong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=538a46f357b28e3b84e1f94c4519b47e502ec610.1525465447.git.jaben.carsey@intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox