From nobody Fri May 3 08:40:12 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+46776+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+46776+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1567590857; cv=none; d=zoho.com; s=zohoarc; b=gHBW0I9utfITBlq58O8SPpKwJWop178xF5+4ykrEanEXIGJ2/3BczuKGwmGdaURyUpkoB4KePWRJD8j7JYPYEIdyGHMNNRrdwxsyPZTGLT9ZaR8OnClYxVuqoPMIXGtqL8g8UIOhRF3Z/GBqgHE/yqIymz1lYvvCdLsVlIlSA9A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1567590857; h=Content-Type:Cc:Date:From:List-Id:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Sender:Subject:To:ARC-Authentication-Results; bh=rOA5fJSck1zAICyJCpNteQGsDGWdlFOvku6itPFpqb0=; b=jq3alZDxZafXT3ual5X+yje36uQ88Tm68k8nCsvSYyGEWWJ5BKCuNDk3P5Ahs/TqIpiEiSy1IOiCFyzAMM8mEZViL33bclLqyti5+EftXYPKls4tphmdOk1dbRzCJM/jpjGfRPtCLYkqYn/bgMH0rHANW58l3sNkMBByT9sKAME= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+46776+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1567590857676886.0334038465998; Wed, 4 Sep 2019 02:54:17 -0700 (PDT) Return-Path: X-Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by groups.io with SMTP; Wed, 04 Sep 2019 02:54:16 -0700 X-Amp-Result: UNSCANNABLE X-Amp-File-Uploaded: False X-Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Sep 2019 02:54:16 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,465,1559545200"; d="dat'59?scan'59,208,59";a="358044474" X-Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by orsmga005.jf.intel.com with ESMTP; 04 Sep 2019 02:54:15 -0700 X-Received: from fmsmsx121.amr.corp.intel.com (10.18.125.36) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 4 Sep 2019 02:54:15 -0700 X-Received: from shsmsx108.ccr.corp.intel.com (10.239.4.97) by fmsmsx121.amr.corp.intel.com (10.18.125.36) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 4 Sep 2019 02:54:15 -0700 X-Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.92]) by SHSMSX108.ccr.corp.intel.com ([169.254.8.146]) with mapi id 14.03.0439.000; Wed, 4 Sep 2019 17:54:13 +0800 From: "Fan, ZhijuX" To: "devel@edk2.groups.io" CC: "Gao, Liming" , "Feng, Bob C" Subject: [edk2-devel] [PATCH] BaseTools:ECC need to handle lower case 'static' Thread-Topic: [PATCH] BaseTools:ECC need to handle lower case 'static' Thread-Index: AdVjBrNa1Y1V8hFzSS2GNXtModCyeQ== Date: Wed, 4 Sep 2019 09:54:12 +0000 Message-ID: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,zhijux.fan@intel.com Content-Type: multipart/mixed; boundary="_000_FAD0D7E0AE0FA54D987F6E72435CAFD50AFB7A2DSHSMSX101ccrcor_" Content-Language: en-US DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1567590857; bh=3RtTudBi2TrindWMH4vG0nlnXJBX3VJB8xf2US6PDXc=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=NI5DkOz3l9SJE+WfCeHfqszFsSiz8Otg1U04UxOYGCz7Jc0uuW3kXz40De5q6c5rJmO JlMngkxNoBrqbUrr3q8ipVF4dJ0Q/6N7l4hB/Y2pWrNG64jISomSdyoeTFhBTK/fI1FG3 K3BWBSDxLq0e4mlkcA+/3RrGxjzjH9DjLqI= X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: pass (identity @groups.io) --_000_FAD0D7E0AE0FA54D987F6E72435CAFD50AFB7A2DSHSMSX101ccrcor_ Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" BZ:https://bugzilla.tianocore.org/show_bug.cgi?id=3D1778 We are going to add keyword (lower case) 'static' for functions and global variables which are not referenced outside their current C file. However, the ECC tool only recognizes upper case 'STATIC' at this moment. This will lead to issue reports for new codes that follow the above coding style. This patch is going to handle lower case 'static' Cc: Liming Gao Cc: Bob Feng Signed-off-by: Zhiju.Fan Reviewed-by: Bob Feng =20 --- BaseTools/Source/Python/Ecc/Check.py | 2 +- BaseTools/Source/Python/Ecc/Configuration.py | 2 +- BaseTools/Source/Python/Ecc/EccToolError.py | 2 +- BaseTools/Source/Python/Ecc/c.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/BaseTools/Source/Python/Ecc/Check.py b/BaseTools/Source/Python= /Ecc/Check.py index 86bb8562ba..2180818609 100644 --- a/BaseTools/Source/Python/Ecc/Check.py +++ b/BaseTools/Source/Python/Ecc/Check.py @@ -441,7 +441,7 @@ class Check(object): self.DeclCheckUnionType() =20 =20 - # Check whether no use of int, unsigned, char, void, static, long in a= ny .c, .h or .asl files. + # Check whether no use of int, unsigned, char, void, long in any .c, .= h or .asl files. def DeclCheckNoUseCType(self): if EccGlobalData.gConfig.DeclarationDataTypeCheckNoUseCType =3D=3D= '1' or EccGlobalData.gConfig.DeclarationDataTypeCheckAll =3D=3D '1' or Ecc= GlobalData.gConfig.CheckAll =3D=3D '1': EdkLogger.quiet("Checking Declaration No use C type ...") diff --git a/BaseTools/Source/Python/Ecc/Configuration.py b/BaseTools/Sourc= e/Python/Ecc/Configuration.py index 57ae932ed2..9d9feaca5e 100644 --- a/BaseTools/Source/Python/Ecc/Configuration.py +++ b/BaseTools/Source/Python/Ecc/Configuration.py @@ -256,7 +256,7 @@ class Configuration(object): ## Declarations and Data Types Checking self.DeclarationDataTypeCheckAll =3D 0 =20 - # Check whether no use of int, unsigned, char, void, static, long = in any .c, .h or .asl files. + # Check whether no use of int, unsigned, char, void, long in any .= c, .h or .asl files. self.DeclarationDataTypeCheckNoUseCType =3D 1 # Check whether the modifiers IN, OUT, OPTIONAL, and UNALIGNED are= used only to qualify arguments to a function and should not appear in a da= ta type declaration self.DeclarationDataTypeCheckInOutModifier =3D 1 diff --git a/BaseTools/Source/Python/Ecc/EccToolError.py b/BaseTools/Source= /Python/Ecc/EccToolError.py index 4b1bef6a3e..0ff3b42674 100644 --- a/BaseTools/Source/Python/Ecc/EccToolError.py +++ b/BaseTools/Source/Python/Ecc/EccToolError.py @@ -149,7 +149,7 @@ gEccErrorMessage =3D { ERROR_INCLUDE_FILE_CHECK_NAME : "No permission for the include file wi= th same names", =20 ERROR_DECLARATION_DATA_TYPE_CHECK_ALL : "", - ERROR_DECLARATION_DATA_TYPE_CHECK_NO_USE_C_TYPE : "There should be no = use of int, unsigned, char, void, static, long in any .c, .h or .asl files", + ERROR_DECLARATION_DATA_TYPE_CHECK_NO_USE_C_TYPE : "There should be no = use of int, unsigned, char, void, long in any .c, .h or .asl files", ERROR_DECLARATION_DATA_TYPE_CHECK_IN_OUT_MODIFIER : """The modifiers I= N, OUT, OPTIONAL, and UNALIGNED should be used only to qualify arguments to= a function and should not appear in a data type declaration""", ERROR_DECLARATION_DATA_TYPE_CHECK_EFI_API_MODIFIER : "The EFIAPI modif= ier should be used at the entry of drivers, events, and member functions of= protocols", ERROR_DECLARATION_DATA_TYPE_CHECK_ENUMERATED_TYPE : "Enumerated Type s= hould have a 'typedef' and the name must be in capital letters", diff --git a/BaseTools/Source/Python/Ecc/c.py b/BaseTools/Source/Python/Ecc= /c.py index 2a73da7cb8..a99b40a701 100644 --- a/BaseTools/Source/Python/Ecc/c.py +++ b/BaseTools/Source/Python/Ecc/c.py @@ -1859,7 +1859,7 @@ def CheckDeclNoUseCType(FullFileName): where Model =3D %d """ % (FileTable, DataClass.MODEL_IDENTIFIER_VARIABLE) ResultSet =3D Db.TblFile.Exec(SqlStatement) - CTypeTuple =3D ('int', 'unsigned', 'char', 'void', 'static', 'long') + CTypeTuple =3D ('int', 'unsigned', 'char', 'void', 'long') for Result in ResultSet: for Type in CTypeTuple: if PatternInModifier(Result[0], Type): --=20 2.14.1.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#46776): https://edk2.groups.io/g/devel/message/46776 Mute This Topic: https://groups.io/mt/33136540/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- --_000_FAD0D7E0AE0FA54D987F6E72435CAFD50AFB7A2DSHSMSX101ccrcor_ Content-Disposition: attachment; filename="winmail.dat" Content-Transfer-Encoding: base64 Content-Type: application/ms-tnef; name="winmail.dat" eJ8+IkM/AQaQCAAEAAAAAAABAAEAAQeQBgAIAAAA5AQAAAAAAADoAAEJgAEAIQAAAEUzQUE3MUUx QTdDREQyNDFCNkQ1N0UyRkUyMDI0RkEwAFsHAQ2ABAACAAAAAgACAAEFgAMADgAAAOMHCQAEAAkA NgAMAAMARQEBIIADAA4AAADjBwkABAAJADYADAADAEUBAQiABwAYAAAASVBNLk1pY3Jvc29mdCBN YWlsLk5vdGUAMQgBBIABADkAAABbUEFUQ0hdIEJhc2VUb29sczpFQ0MgbmVlZCB0byBoYW5kbGUg bG93ZXIgY2FzZSAnc3RhdGljJwAfEwELgAEAIQAAAEUzQUE3MUUxQTdDREQyNDFCNkQ1N0UyRkUy MDI0RkEwAFsHAQOQBgBsEgAAMwAAAAIBfwABAAAASAAAADxGQUQwRDdFMEFFMEZBNTREOTg3RjZF NzI0MzVDQUZENTBBRkI3QTJEQFNIU01TWDEwMS5jY3IuY29ycC5pbnRlbC5jb20+AAsAHw4BAAAA AgEJEAEAAADWCAAA0ggAABwUAABMWkZ1SoIUXWEACmZiaWQEAABjY8BwZzEyNTIA/gND8HRleHQB 9wKkA+MCAARjaArAc2V0MCDvB20CgwBQEU0yCoAGtAKAln0KgAjIOwliMTkOwL8JwxZyCjIWcQKA FWIqCbBzCfAEkGF0BbIOUANgc6JvAYAgRXgRwW4YMF0GUnYEkBe2AhByAMB0fQhQbhoxECAFwAWg G2RkmiADUiAQIheyXHYIkOR3awuAZDUdUwTwB0ANF3AwCnEX8mJrbWsGcwGQACAgQk1fQuBFR0lO fQr8AfEL8REfsFo6aAJAcHM6wC8vYnVnegMQC2AkLnQHMG5vBaFlLgEFsGcvc2hvd19BIlEuY2dp Pw3QPUAxNzc4XGwLgGU7CoElFFcZ4ArAGeBnb1ULgGccwG8mAGQcYGtYZXl3BbAcYCgJAHfFG7Jh EgApICcfYSLgDGMnHHAFsWZ1bmNfIuACIAQgAHAcYGcJAGJ7B0AlBXYKwAcwAmAHkXd6aA5QaCYD IxAFQAlwZtsEkAnwYxxRCGB0AJABAPEcwGhlaRvBCHAssQVA3kMccAMQI2AlDEgnwRox9iwtkhlg Qy6AGJAG8C0QWG5seSxhBaBnAwB6MQeRdXBwJ+UoYFNU8EFUSUMo4BiALZEEAN4gBGAHgAIwLuZU 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 AGYAYQBuAEAAaQBuAHQAZQBsAC4AYwBvAG0AAAAAAB8AZAABAAAACgAAAFMATQBUAFAAAAAAAAIB QQABAAAAZAAAAAAAAACBKx+kvqMQGZ1uAN0BD1QCAAAAgEYAYQBuACwAIABaAGgAaQBqAHUAWAAA AFMATQBUAFAAAAB6AGgAaQBqAHUAeAAuAGYAYQBuAEAAaQBuAHQAZQBsAC4AYwBvAG0AAAAfAAJd AQAAACoAAAB6AGgAaQBqAHUAeAAuAGYAYQBuAEAAaQBuAHQAZQBsAC4AYwBvAG0AAAAAAB8A5V8B AAAAMgAAAHMAaQBwADoAegBoAGkAagB1AHgALgBmAGEAbgBAAGkAbgB0AGUAbAAuAGMAbwBtAAAA AAAfABoMAQAAABgAAABGAGEAbgAsACAAWgBoAGkAagB1AFgAAAAfAB8MAQAAACoAAAB6AGgAaQBq AHUAeAAuAGYAYQBuAEAAaQBuAHQAZQBsAC4AYwBvAG0AAAAAAB8AHgwBAAAACgAAAFMATQBUAFAA AAAAAAIBGQwBAAAAZAAAAAAAAACBKx+kvqMQGZ1uAN0BD1QCAAAAgEYAYQBuACwAIABaAGgAaQBq AHUAWAAAAFMATQBUAFAAAAB6AGgAaQBqAHUAeAAuAGYAYQBuAEAAaQBuAHQAZQBsAC4AYwBvAG0A AAAfAAFdAQAAACoAAAB6AGgAaQBqAHUAeAAuAGYAYQBuAEAAaQBuAHQAZQBsAC4AYwBvAG0AAAAA AB8A+D8BAAAAGAAAAEYAYQBuACwAIABaAGgAaQBqAHUAWAAAAB8AI0ABAAAAKgAAAHoAaABpAGoA dQB4AC4AZgBhAG4AQABpAG4AdABlAGwALgBjAG8AbQAAAAAAHwAiQAEAAAAKAAAAUwBNAFQAUAAA AAAAAgH5PwEAAABkAAAAAAAAAIErH6S+oxAZnW4A3QEPVAIAAACARgBhAG4ALAAgAFoAaABpAGoA dQBYAAAAUwBNAFQAUAAAAHoAaABpAGoAdQB4AC4AZgBhAG4AQABpAG4AdABlAGwALgBjAG8AbQAA AB8ACV0BAAAAKgAAAHoAaABpAGoAdQB4AC4AZgBhAG4AQABpAG4AdABlAGwALgBjAG8AbQAAAAAA CwBAOgEAAAAfABoAAQAAABIAAABJAFAATQAuAE4AbwB0AGUAAAAAAAMA8T8JBAAACwBAOgEAAAAD AP0/5AQAAAIBCzABAAAAEAAAAOOqceGnzdJBttV+L+ICT6ADABcAAQAAAEAAOQAAOhy0BmPVAUAA CDDsQpm0BmPVAR8AAICGAwIAAAAAAMAAAAAAAABGAQAAAB4AAABhAGMAYwBlAHAAdABsAGEAbgBn AHUAYQBnAGUAAAAAAAEAAAAMAAAAZQBuAC0AVQBTAAAAHwA3AAEAAAByAAAAWwBQAEEAVABDAEgA XQAgAEIAYQBzAGUAVABvAG8AbABzADoARQBDAEMAIABuAGUAZQBkACAAdABvACAAaABhAG4AZABs AGUAIABsAG8AdwBlAHIAIABjAGEAcwBlACAAJwBzAHQAYQB0AGkAYwAnAAAAAAAfAD0AAQAAAAIA AAAAAAAAAwA2AAAAAAACAXEAAQAAABYAAAAB1WMGs1rVjVXyEXNJLYY1e0yh0LJ5AAAfAHAAAQAA AHIAAABbAFAAQQBUAEMASABdACAAQgBhAHMAZQBUAG8AbwBsAHMAOgBFAEMAQwAgAG4AZQBlAGQA IAB0AG8AIABoAGEAbgBkAGwAZQAgAGwAbwB3AGUAcgAgAGMAYQBzAGUAIAAnAHMAdABhAHQAaQBj ACcAAAAAAB8ANRABAAAAkAAAADwARgBBAEQAMABEADcARQAwAEEARQAwAEYAQQA1ADQARAA5ADgA NwBGADYARQA3ADIANAAzADUAQwBBAEYARAA1ADAAQQBGAEIANwBBADIARABAAFMASABTAE0AUwBY ADEAMAAxAC4AYwBjAHIALgBjAG8AcgBwAC4AaQBuAHQAZQBsAC4AYwBvAG0APgAAAAMA3j+fTgAA QAAHMPn4lrQGY9UBAgELAAEAAAAQAAAA46px4afN0kG21X4v4gJPoAMAJgAAAAAAAgFHAAEAAAAy AAAAYz1VUzthPU1DSTtwPUludGVsO2w9U0hTTVNYMTAxLTE5MDkwNDA5NTQxMlotMzA3MgAAAAIB EDABAAAARgAAAAAAAAAmd705O+w4SaSmFT3LpXtCBwD60Nfgrg+lTZh/bnJDXK/VAAAARBFeAACm k2g2iHZsS6dK0+tHmkxkAAAJVMACAAAAAB8A+j8BAAAAGAAAAEYAYQBuACwAIABaAGgAaQBqAHUA WAAAAAMACVkBAAAAQAAAgAggBgAAAAAAwAAAAAAAAEYAAAAAv4UAANBWXbMGY9UBCwAAgAggBgAA AAAAwAAAAAAAAEYAAAAAgoUAAAAAAAAfAACAhgMCAAAAAADAAAAAAAAARgEAAAAYAAAAZABsAHAA LQBwAHIAbwBkAHUAYwB0AAAAAQAAABoAAABkAGwAcABlAC0AdwBpAG4AZABvAHcAcwAAAAAAHwAA gIYDAgAAAAAAwAAAAAAAAEYBAAAAGAAAAGQAbABwAC0AdgBlAHIAcwBpAG8AbgAAAAEAAAASAAAA MQAxAC4AMgAuADAALgA2AAAAAAAfAACAhgMCAAAAAADAAAAAAAAARgEAAAAaAAAAZABsAHAALQBy AGUAYQBjAHQAaQBvAG4AAAAAAAEAAAAUAAAAbgBvAC0AYQBjAHQAaQBvAG4AAAADAA00/T8AAB8A AICGAwIAAAAAAMAAAAAAAABGAQAAACAAAAB4AC0AbQBzAC0AaABhAHMALQBhAHQAdABhAGMAaAAA AAEAAAACAAAAAAAAAB8AAICGAwIAAAAAAMAAAAAAAABGAQAAACIAAAB4AC0AbwByAGkAZwBpAG4A YQB0AGkAbgBnAC0AaQBwAAAAAAABAAAAIAAAAFsAMQAwAC4AMgAzADkALgAxADIANwAuADQAMABd AAAAMvw= --_000_FAD0D7E0AE0FA54D987F6E72435CAFD50AFB7A2DSHSMSX101ccrcor_--