这篇教程会帮助你尝试分析一小段有问题的C++代码、在读完本教程后、你应该能够:
通过这篇教程、我们会引导你到你对其中的某个步骤感兴趣或者想要了解更多的详细信息界面
创建一个 sample.cpp、使用以下的内容:
int main() {
int i = 0, j = 1;
if (j) {
if (i) {
return 1;
j = 0;
}
}
return 0;
}
实际上、在使用OCLint之前去提前创建代码并不是必须的。但是、由于找到正确的参数已经成了最频繁被提及的问题、这一步就是尝试去帮助改变OCLint要求的编译标识
注意: 这一步并不是想要去展示如何查找正确的编译标识、因此、关于编译标识的某些只是是必须的
$ CC -c sample.cpp // step 1: 编译生成sample.o
$ CC -o sample sample.o // step 2: 连接sample.o和可执行文件
//你可以更改CC成你最喜欢的编译器、但是要支持GCC、比如g++ and clang++
$ ./sample // 执行这个二进制文件
$ echo $? // 输出0可能意味着这个代码已经被成功地创建
我们只要连续两步就可以生成二进制文件、第一步是编译代码、第二部link。我们实际只对第一步感兴趣、因为那就是我们需要给OCLint的全部标识。在这个例子中、编译的标识是-c、检查的文件是sample.cpp.
如有你不能通过这一步、不要放弃、有一些工具可以帮助你、比如CMake 和 Bear。另外、我们提供了帮助程序oclint-json-compilation-database 和oclint-xcodebuild(for Mac and xcode users)(第二个连接目测已经失效)
OCLint 通过以下的格式来检查单个文件
oclint [options] -- [compiler flags]
因此、这个例子的命令是
$ oclint sample.cpp -- -c
如有想要改变OCLint的行为、改变source前面的[options],想要更改编译的行为、改变 – 后面的[compiler flags].一个复杂的例子也许看起来是这样的:
$ oclint -report-type html -o report.html sample.cpp -- -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -I/usr/include -I/usr/local/include -c
想要更多的选项?请看oclint Manual
前面章节讲的方法能够完美地用于单个或者几个文件。检查的进程很快、改变参数也很简单。
然而如果是一个有很多组源文件的项目、我们首选一次性分析整个项目然后得到一个单一的报告。
如有所有的资源都分享同一个编译标识、我们可以
oclint [options] <source0> [... <sourceN>] -- [compiler flags]
然而、每一个源文件都可能有不同的编译变质、在这种情况下、通过读取编译资料库、OCLint可以识别对源文件的离了表和编译阶段每次使用的编译标识。这可以理解为一个压缩的生成文件。所以、在这种情况下:
oclint -p <build-path> [other options] <source0> [... <sourceN>]
一个更好用的帮助程序是oclint-json-compilation-database。如果你使用OCLint来分析项目、在大多数情况下、你可以使用 oclint-json-compilation-database 来代替、间接和oclint交流。
对于使用Mac和xcode的用户、你可以找到Using OCLint with xcodebuild、然后在xcode中使用oclint。<../guide/xcode.html>文档非常有帮助。
我们也提供了给使用cMake和bear(注:原文是make、应该是笔误)的人指导手册。
通过在上面的列子中应用OCLint,以默认的文本格式,报告会是这样子的:
Processing: /path/to/sample.cpp.
OCLint Report
Summary: TotalFiles=1 FilesWithViolations=1 P1=0 P2=1 P3=1
/path/to/sample.cpp:4:9: collapsible if statements P3
/path/to/sample.cpp:9:17: dead code P2
[OCLint (http://oclint.org) v0.8]
基本上、以下的信息会被在报告中找到:
进入这里写链接内容 读取更多信息
下面、更多的细节信息可以在manuals和user guide中找到。另外、一些how to document可以帮助你快速找到信息
本篇文章翻译自http://docs.oclint.org/en/stable/intro/tutorial.html#tutorial,您可以移步看最正宗的内容。