- 官方文档地址 : http://docs.oclint.org/en/stable/
一、简介
OCLint
是一个静态代码分析工具,通过分析C、C++、Objective-C
代码寻找潜在的问题,找出可能出现的潜在错误,减少复杂代码、冗余代码,提高代码质量。具有下面特点:
OCLint
依赖于源代码的抽象语法数,检查高效并准确- 可以动态添加规则
- 通过配置命令行调用,有利于用户持续集成应用时对代码进行检查,维护成本很低
二、小试牛刀
OCLint提供Release版本的下载,Release版本使用方便但失去了自定义的功能。我们可以在https://github.com/oclint/oclint/releases 中找到所有历史的Release版本(包括源码)。
首先我们使用源码构建
1. cd oclint-scripts 2. ./make 3. cd ..
检查是否构建成功
./build/oclint-<major>.<minor>.dev.<git-hash>/bin/oclint
使用oclint 、oclint-json-compilation-database和oclint-xcodebuild可以生成分析报告
使用oclint是最基础的用法
用法:oclint [subcommand] [options] <source0> [... <sourceN>] 选项: 一般选项: -help - 显示可用选项(帮助隐藏更多) -help-list - 显示可用选项的列表(-help-list-hidden为更多) -version - 显示此程序的版本 OCLint选项: -R = <directory> - 将目录添加到规则加载路径 -allow-duplicated-violations - 在OCLint报告中允许重复的违例 -disable-rule = <rule name> - 禁用规则 -enable-clang-static-analyzer - 启用Clang静态分析器,并将结果集成到OCLint报告中 -enable-global-analysis - 编译每个源,并跨全局上下文进行分析(取决于源文件的数量,可能导致高内存负载) -extra-arg = <string> - 附加到编译器命令行的附加参数 -extra-arg-before = <string> - 添加到编译器命令行的附加参数 -list-enabled-rules - 列出已启用的规则 -max-priority-1 = <threshold> - 允许的最大优先级1违例数 -max-priority-2 = <threshold> - 允许的最大优先级2违例数 -max-priority-3 = <threshold> - 允许的最大优先级3违例数 -no-analytics - 禁用匿名分析 -o = <path> - 将输出写入<path> -p = <string> - 构建路径 -rc = <parameter> = <value> - 覆盖规则的默认行为 -report-type = <name> - 更改输出报告类型 如html -rule = <rule name> - 显式选择规则 -p <build-path>用于读取编译命令数据库。
oclint-json-compilation-database提供了一个简便的方式使用
oclint
。从oclint
命令看到我们要给每个源文件设置参数,这对含有大量文件的工程来说使用oclint
命令是否麻烦。幸运的是clang
在编译的时候会生成JSONCompilationDatabase.json
文件 http://clang.llvm.org/docs/JSONCompilationDatabase.html ,这个文件中含有各个文件的编译参数。``` 使用方法: oclint-json-compilation-database [-h] [-v] [-debug] [-i INCLUDES] [-e EXCLUDES] [oclint_args [oclint_args ...]] OCLint for JSON Compilation Database (compile_commands.json) positional arguments: oclint_args arguments that are passed to OCLint invocation optional arguments: -h, --help show this help message and exit -v sh