7

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

4

3 回答 3

6

代替将配置作为参数传递(请参阅 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
于 2015-03-23T08:59:18.110 回答
5

与许多事情一样,答案是视情况而定。

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

  2. 如果要更改现有规则的参数,则需要将命令行参数添加-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 是否涵盖所有规则。您可能需要查看每个规则的源代码以了解其工作原理。

于 2013-01-31T16:54:32.740 回答
4

如果你使用的是 Xcode 脚本,你应该oclint_args像这样使用:

oclint-json 编译数据库 oclint_args "-rc LONG_LINE=150" | sed 's/(.. \m{1,2}:[0-9] :[0-9]*:)/\1 警告:/'

在该示例中,我将 LONG_LINE 的规则更改为 150 个字符

于 2014-03-18T21:55:46.197 回答