我正在使用针对Objective-C的OCLint静态代码分析工具,并想了解如何自定义规则?规则由dylib文件集表示。
答案 0 :(得分:5)
与许多事情一样,答案取决于它。
如果你想编写自己的自定义规则,那么你需要在现有源代码的基础上用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是否涵盖了所有规则。您可能需要查看每个规则的源代码,以确定其工作原理。
答案 1 :(得分:5)
代替将配置作为参数传递(参见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
答案 2 :(得分:4)
如果您正在使用Xcode脚本,则应使用oclint_args
,如下所示:
oclint-json-compilation-database oclint_args“-rc LONG_LINE = 150”| SED 's /(。。\ m {1,2}:[0-9] :[0-9] *:)/ \ 1警告:/'
在该示例中,我将LONG_LINE的规则更改为150个字符