OCLint规则定制

时间:2013-01-16 12:10:25

标签: objective-c code-analysis

我正在使用针对Objective-C的OCLint静态代码分析工具,并想了解如何自定义规则?规则由dylib文件集表示。

3 个答案:

答案 0 :(得分:5)

与许多事情一样,答案取决于它。

  1. 如果你想编写自己的自定义规则,那么你需要在现有源代码的基础上用C ++编写自己的规则。查看oclint-rules/rules目录,size/LongLineRule.cpp是一个简单的规则。你需要重新编译等。

  2. 如果要更改现有规则的参数,则需要将命令行参数-rc=<rulename>=<value>添加到oclint的调用中。例如,如果您希望长线规则仅激活超过150个字符的行,则需要添加-rc=LONG_LINE=150

  3. 我没有耐心列出您可以更改的所有不同参数。规则列表在这里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个字符