用于发现不正确的预处理器指令的 Powershell 脚本
Powershell Script for spotting incorrect preprocessor directives
我需要检查项目文件中每个“#define”的值是否在括号内。
例如:
#define A (50)
#define B (60)
#define C 70
我想找出所有包含错误#define 格式的文件,以便手动更正它。
我想通过 运行 一个小的 powershell 脚本来自动执行此任务,但我坚持执行它。这是我到目前为止写的:
GetChildItem -Recurse | Select-String "#define" /*some additional code*/ -List | Select Path
任何解决方案将不胜感激。
类似于:
... |Select-String '^#define(?!\s+[\w]+\s+\([^\)]+\)\s*$)'
...应该做。
正则表达式模式分解为:
^ # start of line
#define # followed by literal string "#define"
(?! # negative look-ahead for
\s+ # 1 or more whitespace chars
[\w]+ # 1 or more words characters
\s+ # 1 or more whitespace chars
\([^\)]+\) # literal "(" followed by 1 or more non-"(", and finally a literal ")"
\s* # trailing whitespace
$ # end of string
) # end negative look-ahead
换句话说,我们正在寻找符合以下条件的行:
- 有一个
#define
指令,
- 不是格式正确的
我需要检查项目文件中每个“#define”的值是否在括号内。 例如:
#define A (50)
#define B (60)
#define C 70
我想找出所有包含错误#define 格式的文件,以便手动更正它。
我想通过 运行 一个小的 powershell 脚本来自动执行此任务,但我坚持执行它。这是我到目前为止写的:
GetChildItem -Recurse | Select-String "#define" /*some additional code*/ -List | Select Path
任何解决方案将不胜感激。
类似于:
... |Select-String '^#define(?!\s+[\w]+\s+\([^\)]+\)\s*$)'
...应该做。
正则表达式模式分解为:
^ # start of line
#define # followed by literal string "#define"
(?! # negative look-ahead for
\s+ # 1 or more whitespace chars
[\w]+ # 1 or more words characters
\s+ # 1 or more whitespace chars
\([^\)]+\) # literal "(" followed by 1 or more non-"(", and finally a literal ")"
\s* # trailing whitespace
$ # end of string
) # end negative look-ahead
换句话说,我们正在寻找符合以下条件的行:
- 有一个
#define
指令, - 不是格式正确的