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 文档的更多改进会有所帮助。
我是 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 文档的更多改进会有所帮助。