oclint 0.8 on Ubuntu 开始工作

oclint 0.8 on Ubuntu getting it to work

我是 oclint 的新手,试图让版本 0.8 在 Ubuntu 14.04 桌面 运行 上作为 Virtualbox 中的虚拟机工作。我是从源代码构建的,而不是使用二进制文件。

我有 2 个非常简单的程序。第一个是我编译的一个cpp小程序:

gcc sample.cpp -o sample

我运行喜欢这样的oclint

oclint sample.cpp -- -c

我收到了一份文本报告。

我有另一个 objective-c 看起来像这样的程序

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

        NSLog (@"hello world");
        [pool drain];
        return 0;
}

这样编译:

 gcc -c hello.m `gnustep-config --objc-flags` -lobjc -lgnustep-base

这会产生一个有效的可执行文件。但是当我 运行 像这样反对 lint 时,我遇到了一个问题

 oclint hello.m -- -c 

Compiler Errors:
(please be aware that these errors will prevent OCLint from analyzing this source code)

/usr/include/x86_64-linux-gnu/sys/param.h:23:10: 'stddef.h' file not found


OCLint Report

Summary: TotalFiles=0 FilesWithViolations=0 P1=0 P2=0 P3=0 


[OCLint (http://oclint.org) v0.8.1]

我已经安装了一些库来解决丢失的 stddef.h 文件,包括 libc6 和 libc6-dev 但没有成功。我开始认为这与 oclint 运行 的方式有关,但我太新了,无法快速弄清楚。我想先让简单的示例正常工作,然后再转向更复杂的示例。

我正在回答我自己的问题。 oclint有几个问题,可能是我不够了解。

首先,在 运行ning oclint 时正确获取命令选项很重要。最好的建议是在 运行 构建时使用 bear 以在 compile_commands.json 文件中捕获这些选项,并使用 oclint-json-compilation-database 为您 运行 oclint。

oclint-json-compilation-database 是一个 python 脚本,您在使用前确实需要查看它。例如:

#!/usr/bin/env python

应该是 python 在您的环境中的位置。我改成了

#!/usr/bin/python

此 python 脚本读取 compile_commands.json 并为每个通过过滤器的程序格式化 oclint 命令行调用。在我的例子中,生成的命令行太长,我得到了一个段。过错。当我缩小命令行时,我得到了一个有效的 运行.

我所有的问题都解决了。 oclint 文档的更多改进会有所帮助。