Răsfoiți Sursa

Utilities/ast-grep: add rules to remove `CM_DBG` usage

An easy way to detect and remove debugging left over from development.
The rules are disabled by default so that LSP usage doesn't interfere
when they are wanted.

To actually use the rules, severity flags are necessary:

    ast-grep scan --error=rm-cmdbg-includes --error=rm-cmdbg-macros

This command will report on instances; passing `-U` as well will update
the source.

Tests are also not run by default; see
https://github.com/ast-grep/ast-grep/issues/2023 to track its progress.
Ben Boeckel 4 luni în urmă
părinte
comite
43fbd92991

+ 16 - 0
Utilities/ast-grep/rule-tests/__snapshots__/rm-cmdbg-includes-snapshot.yml

@@ -0,0 +1,16 @@
+id: rm-cmdbg-includes
+snapshots:
+  '#include "cmDebugTools.h"':
+    fixed: ''
+    labels:
+    - source: '#include "cmDebugTools.h"'
+      style: primary
+      start: 0
+      end: 25
+  '#include <cmDebugTools.h>':
+    fixed: ''
+    labels:
+    - source: '#include <cmDebugTools.h>'
+      style: primary
+      start: 0
+      end: 25

+ 30 - 0
Utilities/ast-grep/rule-tests/__snapshots__/rm-cmdbg-macros-snapshot.yml

@@ -0,0 +1,30 @@
+id: rm-cmdbg-macros
+snapshots:
+  CM_DBG(arg);:
+    fixed: arg;
+    labels:
+    - source: CM_DBG(arg)
+      style: primary
+      start: 0
+      end: 11
+  a = CM_DBG(arg);:
+    fixed: a = arg;
+    labels:
+    - source: CM_DBG(arg)
+      style: primary
+      start: 4
+      end: 15
+  b = a + CM_DBG(arg);:
+    fixed: b = a + arg;
+    labels:
+    - source: CM_DBG(arg)
+      style: primary
+      start: 8
+      end: 19
+  f(CM_DBG(arg));:
+    fixed: f(arg);
+    labels:
+    - source: CM_DBG(arg)
+      style: primary
+      start: 2
+      end: 13

+ 8 - 0
Utilities/ast-grep/rule-tests/rm-cmdbg-includes.yml

@@ -0,0 +1,8 @@
+---
+id: rm-cmdbg-includes
+valid:
+  - '#include "NotcmDebugTools.h"'
+  - '#include <NotcmDebugTools.h>'
+invalid:
+  - '#include "cmDebugTools.h"'
+  - '#include <cmDebugTools.h>'

+ 10 - 0
Utilities/ast-grep/rule-tests/rm-cmdbg-macros.yml

@@ -0,0 +1,10 @@
+---
+id: rm-cmdbg-macros
+valid:
+  - CM_DBG;
+  - macro(expr);
+invalid:
+  - CM_DBG(arg);
+  - f(CM_DBG(arg));
+  - b = a + CM_DBG(arg);
+  - a = CM_DBG(arg);

+ 13 - 0
Utilities/ast-grep/rules/rm-cmdbg-includes.yml

@@ -0,0 +1,13 @@
+---
+id: rm-cmdbg-includes
+language: Cpp
+severity: 'off'
+message: "Remove `cmDebugTools.h` includes before submission"
+ignores:
+  # Unit tests for the header.
+  - Tests/CMakeLib/testDebug.cxx
+rule:
+  any:
+    - pattern: '#include "cmDebugTools.h"'
+    - pattern: '#include <cmDebugTools.h>'
+fix: ''

+ 12 - 0
Utilities/ast-grep/rules/rm-cmdbg-macros.yml

@@ -0,0 +1,12 @@
+---
+id: rm-cmdbg-macros
+language: Cpp
+severity: 'off'
+message: "Remove `CM_DBG` usage before submission"
+ignores:
+  # Unit tests for the header.
+  - Tests/CMakeLib/testDebug.cxx
+rule:
+  pattern: CM_DBG($EXPR)
+  kind: call_expression
+fix: $EXPR