mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-10-08 23:44:00 +03:00
Utilities/ast-grep: add rules for cmHas{Suf,Pre}fix for character needles
This commit is contained in:
1 parent
aa477d8768
commit
d9ee22f331
8 files changed
+190
No files matched your search
@@ -0,0 +1,47 @@
|
|||||||
|
id: cmhasprefix-char
|
||||||
|
snapshots:
|
||||||
|
cmHasPrefix(haystack, "'"):
|
||||||
|
fixed: cmHasPrefix(haystack, '\'')
|
||||||
|
labels:
|
||||||
|
- source: '"''"'
|
||||||
|
style: primary
|
||||||
|
start: 22
|
||||||
|
end: 25
|
||||||
|
- source: cmHasPrefix(haystack, "'")
|
||||||
|
style: secondary
|
||||||
|
start: 0
|
||||||
|
end: 26
|
||||||
|
- source: ','
|
||||||
|
style: secondary
|
||||||
|
start: 20
|
||||||
|
end: 21
|
||||||
|
cmHasPrefix(haystack, "\n"):
|
||||||
|
fixed: cmHasPrefix(haystack, '\n')
|
||||||
|
labels:
|
||||||
|
- source: '"\n"'
|
||||||
|
style: primary
|
||||||
|
start: 22
|
||||||
|
end: 26
|
||||||
|
- source: cmHasPrefix(haystack, "\n")
|
||||||
|
style: secondary
|
||||||
|
start: 0
|
||||||
|
end: 27
|
||||||
|
- source: ','
|
||||||
|
style: secondary
|
||||||
|
start: 20
|
||||||
|
end: 21
|
||||||
|
cmHasPrefix(haystack, "a"):
|
||||||
|
fixed: cmHasPrefix(haystack, 'a')
|
||||||
|
labels:
|
||||||
|
- source: '"a"'
|
||||||
|
style: primary
|
||||||
|
start: 22
|
||||||
|
end: 25
|
||||||
|
- source: cmHasPrefix(haystack, "a")
|
||||||
|
style: secondary
|
||||||
|
start: 0
|
||||||
|
end: 26
|
||||||
|
- source: ','
|
||||||
|
style: secondary
|
||||||
|
start: 20
|
||||||
|
end: 21
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
id: cmhassuffix-char
|
||||||
|
snapshots:
|
||||||
|
cmHasSuffix(haystack, "'"):
|
||||||
|
fixed: cmHasSuffix(haystack, '\'')
|
||||||
|
labels:
|
||||||
|
- source: '"''"'
|
||||||
|
style: primary
|
||||||
|
start: 22
|
||||||
|
end: 25
|
||||||
|
- source: cmHasSuffix(haystack, "'")
|
||||||
|
style: secondary
|
||||||
|
start: 0
|
||||||
|
end: 26
|
||||||
|
- source: ','
|
||||||
|
style: secondary
|
||||||
|
start: 20
|
||||||
|
end: 21
|
||||||
|
cmHasSuffix(haystack, "\n"):
|
||||||
|
fixed: cmHasSuffix(haystack, '\n')
|
||||||
|
labels:
|
||||||
|
- source: '"\n"'
|
||||||
|
style: primary
|
||||||
|
start: 22
|
||||||
|
end: 26
|
||||||
|
- source: cmHasSuffix(haystack, "\n")
|
||||||
|
style: secondary
|
||||||
|
start: 0
|
||||||
|
end: 27
|
||||||
|
- source: ','
|
||||||
|
style: secondary
|
||||||
|
start: 20
|
||||||
|
end: 21
|
||||||
|
cmHasSuffix(haystack, "a"):
|
||||||
|
fixed: cmHasSuffix(haystack, 'a')
|
||||||
|
labels:
|
||||||
|
- source: '"a"'
|
||||||
|
style: primary
|
||||||
|
start: 22
|
||||||
|
end: 25
|
||||||
|
- source: cmHasSuffix(haystack, "a")
|
||||||
|
style: secondary
|
||||||
|
start: 0
|
||||||
|
end: 26
|
||||||
|
- source: ','
|
||||||
|
style: secondary
|
||||||
|
start: 20
|
||||||
|
end: 21
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
id: cmhasprefix-char
|
||||||
|
valid:
|
||||||
|
- "cmHasPrefix(haystack, 'a')"
|
||||||
|
- 'cmHasPrefix(haystack, "foo")'
|
||||||
|
invalid:
|
||||||
|
- 'cmHasPrefix(haystack, "a")'
|
||||||
|
- 'cmHasPrefix(haystack, "\n")'
|
||||||
|
- "cmHasPrefix(haystack, \"'\")"
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
id: cmhassuffix-char
|
||||||
|
valid:
|
||||||
|
- "cmHasSuffix(haystack, 'a')"
|
||||||
|
- 'cmHasSuffix(haystack, "foo")'
|
||||||
|
invalid:
|
||||||
|
- 'cmHasSuffix(haystack, "a")'
|
||||||
|
- 'cmHasSuffix(haystack, "\n")'
|
||||||
|
- "cmHasSuffix(haystack, \"'\")"
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
---
|
||||||
|
id: cmhasprefix-char
|
||||||
|
language: Cpp
|
||||||
|
severity: warning
|
||||||
|
message: "`cmHasPrefix` with a one-char prefix search should use `cmHasPrefix`"
|
||||||
|
rule:
|
||||||
|
kind: string_literal
|
||||||
|
pattern: $ARG
|
||||||
|
follows:
|
||||||
|
regex: '(,|[(])'
|
||||||
|
inside:
|
||||||
|
matches: cmhasprefix-call
|
||||||
|
stopBy:
|
||||||
|
kind: call_expression
|
||||||
|
constraints:
|
||||||
|
ARG:
|
||||||
|
regex: '^"(.|\\.)"$'
|
||||||
|
transform:
|
||||||
|
ARG_CHANGE_QUOTE:
|
||||||
|
replace:
|
||||||
|
source: $ARG
|
||||||
|
replace: '(^"|"$)'
|
||||||
|
by: "'"
|
||||||
|
ARG_ESCAPE_SINGLE_QUOTE:
|
||||||
|
replace:
|
||||||
|
source: $ARG_CHANGE_QUOTE
|
||||||
|
replace: "'''"
|
||||||
|
by: "'\\''"
|
||||||
|
ARG_OUT:
|
||||||
|
replace:
|
||||||
|
source: $ARG_ESCAPE_SINGLE_QUOTE
|
||||||
|
replace: '\\"'
|
||||||
|
by: '"'
|
||||||
|
fix: $ARG_OUT
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
---
|
||||||
|
id: cmhassuffix-char
|
||||||
|
language: Cpp
|
||||||
|
severity: warning
|
||||||
|
message: "`cmHasSuffix` with a one-char suffix search should use `cmHasSuffix`"
|
||||||
|
rule:
|
||||||
|
kind: string_literal
|
||||||
|
pattern: $ARG
|
||||||
|
follows:
|
||||||
|
regex: '(,|[(])'
|
||||||
|
inside:
|
||||||
|
matches: cmhassuffix-call
|
||||||
|
stopBy:
|
||||||
|
kind: call_expression
|
||||||
|
constraints:
|
||||||
|
ARG:
|
||||||
|
regex: '^"(.|\\.)"$'
|
||||||
|
transform:
|
||||||
|
ARG_CHANGE_QUOTE:
|
||||||
|
replace:
|
||||||
|
source: $ARG
|
||||||
|
replace: '(^"|"$)'
|
||||||
|
by: "'"
|
||||||
|
ARG_ESCAPE_SINGLE_QUOTE:
|
||||||
|
replace:
|
||||||
|
source: $ARG_CHANGE_QUOTE
|
||||||
|
replace: "'''"
|
||||||
|
by: "'\\''"
|
||||||
|
ARG_OUT:
|
||||||
|
replace:
|
||||||
|
source: $ARG_ESCAPE_SINGLE_QUOTE
|
||||||
|
replace: '\\"'
|
||||||
|
by: '"'
|
||||||
|
fix: $ARG_OUT
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
id: cmhasprefix-call
|
||||||
|
language: Cpp
|
||||||
|
rule:
|
||||||
|
pattern: cmHasPrefix($$$)
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
id: cmhassuffix-call
|
||||||
|
language: Cpp
|
||||||
|
rule:
|
||||||
|
pattern: cmHasSuffix($$$)
|
||||||
Reference in new issue
Block a user