我正在为 Objective-C 使用 OCLint 静态代码分析工具,想了解如何自定义规则?规则由一组 dylib 文件表示。
3 回答
代替将配置作为参数传递(请参阅 Jon Boydell 的回答),您还可以创建一个.oclint
在项目目录中命名的 YML 文件。
这是一个自定义一些内容的示例文件:
rules:
- LongLine
disable-rules:
rulePaths:
- /etc/rules
rule-configurations:
- key: LONG_LINE
value: 20
output: filename
report-type: xml
max-priority-1: 10
max-priority-2: 20
max-priority-3: 30
enable-clang-static-analyzer: false
与许多事情一样,答案是视情况而定。
如果您想编写自己的自定义规则,那么您需要在现有源代码之上用 C++ 编写自己的规则。检查
oclint-rules/rules
目录,size/LongLineRule.cpp
这是一个简单的规则。您需要重新编译等。如果要更改现有规则的参数,则需要将命令行参数添加
-rc=<rulename>=<value>
到对oclint
. 例如,如果您希望长行规则仅激活超过 150 个字符的行,您需要添加-rc=LONG_LINE=150
.
我没有耐心列出您可以更改的所有不同参数。规则列表在这里http://docs.oclint.org/en/dev/rules/index.html和基于阈值的规则列表在这里http://docs.oclint.org/en/dev/customizing/rules .html但没有可接受值的列表,我不知道这两个 URL 是否涵盖所有规则。您可能需要查看每个规则的源代码以了解其工作原理。
如果你使用的是 Xcode 脚本,你应该oclint_args
像这样使用:
oclint-json 编译数据库 oclint_args "-rc LONG_LINE=150" | sed 's/(.. \m{1,2}:[0-9] :[0-9]*:)/\1 警告:/'
在该示例中,我将 LONG_LINE 的规则更改为 150 个字符