public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [edk2-devel] [PATCH v2 0/7] Add DebugMacroCheck
@ 2023-09-13 17:06 Michael Kubacki
  2023-09-13 17:06 ` [edk2-devel] [PATCH v2 1/7] RedfishPkg/PlatformHostInterfaceBmcUsbNicLib: Fix DEBUG macro args Michael Kubacki
                   ` (6 more replies)
  0 siblings, 7 replies; 21+ messages in thread
From: Michael Kubacki @ 2023-09-13 17:06 UTC (permalink / raw)
  To: devel
  Cc: Abner Chang, Alexei Fedorov, Ard Biesheuvel, Bob Feng,
	Gerd Hoffmann, Igor Kulchytskyy, Jian J Wang, Jiewen Yao,
	Jordan Justen, Leif Lindholm, Liming Gao, Michael D Kinney,
	Nickle Wang, Pierre Gondois, Rebecca Cran, Sami Mujawar,
	Sean Brogan, Yuwei Chen

From: Michael Kubacki <michael.kubacki@microsoft.com>

Adds a new script and build plugin called DebugMacroCheck.

The script verifies that the number of print specifiers match the
number of arguments in DEBUG() calls.

Overview:

- Build plugin: BuildPlugin/DebugMacroCheckBuildPlugin.py
  - Runs on any build target that is not NO-TARGET
- Standalone script: DebugMacroCheck.py
  - Run `DebugMacroCheck.py --help` to see command line options
- Unit tests:
  - Tests/test_DebugMacroCheck.py
  - Can be run with:
    `python -m unittest discover -s ./BaseTools/Plugin/DebugMacroCheck/tests -v`
  - Also visible in VS Code Test Explorer

Note: I've disabled this in some packages due to past maintainer
preferences for CI checks. If the patch to disable the plugin
does not receive reviews, I will be forced to drop it from the
series which means the plugin will be enabled by default in those
packages.

Background:

The tool has been constantly run against edk2 derived code for about
a year now. During that time, its found over 20 issues in edk2, over
50 issues in various vendor code, and numerous other issues specific
to Project Mu.

See the following series for a batch of issues previously fixed in
edk2 discovered by the tool:

  https://edk2.groups.io/g/devel/message/93104

I've received interest from vendors to place it in edk2 to
immediately find issues in the upstream and make it easier for edk2
consumers to directly acquire it. That led to this patch series.

This would run in edk2 as a build plugin. All issues in the edk2
codebase have been resolved so this would find new issues before
they are merged into the codebase.

The script is meant to be portable so it can be run as a build plugin
or dropped as a standalone script into other environments alongside
the unit tests.

Series Overview:

- Fixes outstanding issues in RedfishPkg
- Adds the `regex` PIP module to pip-requirements.txt
- Adds exceptions for debug macro usage in ArmVirtPkg,
  DynamicTablesPkg, and SecurityPkg
- Disables the plugin in OvmfPkg per maintainer's previous
  preferences
- Adds the plugin

The plugin (this series) is running with passing CI results as shown
in this PR:
  https://github.com/tianocore/edk2/pull/4736

---

V2 changes:

- Move the plugin from .pytool/Plugin to BaseTools/Plugin since
  it is a build plugin not a CI plugin and that's usually where
  build plugins reside.
- Remove `mws` usage since it has been deprecated recently in
  edk2-pytools.

Cc: Abner Chang <abner.chang@amd.com>
Cc: Alexei Fedorov <Alexei.Fedorov@arm.com>
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
Cc: Bob Feng <bob.c.feng@intel.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Igor Kulchytskyy <igork@ami.com>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Leif Lindholm <quic_llindhol@quicinc.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Nickle Wang <nicklew@nvidia.com>
Cc: Pierre Gondois <pierre.gondois@arm.com>
Cc: Rebecca Cran <rebecca@bsdio.com>
Cc: Sami Mujawar <Sami.Mujawar@arm.com>
Cc: Sean Brogan <sean.brogan@microsoft.com>
Cc: Yuwei Chen <yuwei.chen@intel.com>

Michael Kubacki (7):
  RedfishPkg/PlatformHostInterfaceBmcUsbNicLib: Fix DEBUG macro args
  pip-requirements.txt: Add regex
  SecurityPkg.ci.yaml: Add debug macro exception
  ArmVirtPkg.ci.yaml: Add debug macro exception
  DynamicTablesPkg.ci.yaml: Add debug macro exception
  OvmfPkg/PlatformCI: Disable DebugMacroCheck
  BaseTools/Plugin: Add DebugMacroCheck

 RedfishPkg/Library/PlatformHostInterfaceBmcUsbNicLib/PlatformHostInterfaceBmcUsbNicLib.c |   8 +-
 ArmVirtPkg/ArmVirtPkg.ci.yaml                                                            |   8 +
 BaseTools/Plugin/DebugMacroCheck/BuildPlugin/DebugMacroCheckBuildPlugin.py               | 127 +++
 BaseTools/Plugin/DebugMacroCheck/BuildPlugin/DebugMacroCheck_plug_in.yaml                |  11 +
 BaseTools/Plugin/DebugMacroCheck/DebugMacroCheck.py                                      | 859 ++++++++++++++++++++
 BaseTools/Plugin/DebugMacroCheck/Readme.md                                               | 253 ++++++
 BaseTools/Plugin/DebugMacroCheck/tests/DebugMacroDataSet.py                              | 674 +++++++++++++++
 BaseTools/Plugin/DebugMacroCheck/tests/MacroTest.py                                      | 131 +++
 BaseTools/Plugin/DebugMacroCheck/tests/__init__.py                                       |   0
 BaseTools/Plugin/DebugMacroCheck/tests/test_DebugMacroCheck.py                           | 201 +++++
 DynamicTablesPkg/DynamicTablesPkg.ci.yaml                                                |   8 +
 OvmfPkg/PlatformCI/PlatformBuildLib.py                                                   |   1 +
 SecurityPkg/SecurityPkg.ci.yaml                                                          |   9 +
 pip-requirements.txt                                                                     |   2 +-
 14 files changed, 2287 insertions(+), 5 deletions(-)
 create mode 100644 BaseTools/Plugin/DebugMacroCheck/BuildPlugin/DebugMacroCheckBuildPlugin.py
 create mode 100644 BaseTools/Plugin/DebugMacroCheck/BuildPlugin/DebugMacroCheck_plug_in.yaml
 create mode 100644 BaseTools/Plugin/DebugMacroCheck/DebugMacroCheck.py
 create mode 100644 BaseTools/Plugin/DebugMacroCheck/Readme.md
 create mode 100644 BaseTools/Plugin/DebugMacroCheck/tests/DebugMacroDataSet.py
 create mode 100644 BaseTools/Plugin/DebugMacroCheck/tests/MacroTest.py
 create mode 100644 BaseTools/Plugin/DebugMacroCheck/tests/__init__.py
 create mode 100644 BaseTools/Plugin/DebugMacroCheck/tests/test_DebugMacroCheck.py

-- 
2.42.0.windows.2



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#108600): https://edk2.groups.io/g/devel/message/108600
Mute This Topic: https://groups.io/mt/101341642/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2023-09-19 15:13 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-13 17:06 [edk2-devel] [PATCH v2 0/7] Add DebugMacroCheck Michael Kubacki
2023-09-13 17:06 ` [edk2-devel] [PATCH v2 1/7] RedfishPkg/PlatformHostInterfaceBmcUsbNicLib: Fix DEBUG macro args Michael Kubacki
2023-09-14  2:50   ` Chang, Abner via groups.io
2023-09-13 17:06 ` [edk2-devel] [PATCH v2 2/7] pip-requirements.txt: Add regex Michael Kubacki
2023-09-13 17:06 ` [edk2-devel] [PATCH v2 3/7] SecurityPkg.ci.yaml: Add debug macro exception Michael Kubacki
2023-09-13 17:06 ` [edk2-devel] [PATCH v2 4/7] ArmVirtPkg.ci.yaml: " Michael Kubacki
2023-09-13 17:10   ` Ard Biesheuvel
2023-09-18 22:35     ` Michael Kubacki
2023-09-19  0:05       ` Michael D Kinney
2023-09-19 14:46       ` Ard Biesheuvel
2023-09-19 14:52         ` Leif Lindholm
2023-09-19 15:10           ` Michael D Kinney
2023-09-19 15:12           ` Michael Kubacki
2023-09-13 17:06 ` [edk2-devel] [PATCH v2 5/7] DynamicTablesPkg.ci.yaml: " Michael Kubacki
2023-09-14  8:42   ` Sami Mujawar
     [not found]   ` <1784B757CEFF413A.31544@groups.io>
2023-09-14  9:22     ` Sami Mujawar
2023-09-18 19:27       ` Michael Kubacki
2023-09-18 22:36       ` Michael Kubacki
2023-09-19  0:26         ` Michael D Kinney
2023-09-13 17:06 ` [edk2-devel] [PATCH v2 6/7] OvmfPkg/PlatformCI: Disable DebugMacroCheck Michael Kubacki
2023-09-13 17:06 ` [edk2-devel] [PATCH v2 7/7] BaseTools/Plugin: Add DebugMacroCheck Michael Kubacki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox