我在Ubuntu12.10上运行Clang3.4(来自http://llvm.org/apt/)。我在一些代码上运行了分析器(clang - analyzer ),它发现了一些问题:
Blah.C:429:9: warning: Declared variable-length array (VLA) has zero size
unsigned char separatedData[groupDataLength];
^~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~但具体问题并不重要。我想知道得出这个结论的步骤(代码非常复杂,我不能在15分钟内看到)。
我从Clang站点看到一个屏幕截图,显示在web浏览器中查看的工作步骤:

这可能是从Xcode获得的。
的问题是:如何让Clang输出这些从命令行工作的步骤?或者,如果浏览器愿意的话,甚至将结果输出给浏览器?--这将使分析器显着地更有用,并使修复工作更快。
(我注意到GCC的文件很好,但是Clang/LLVM的文档很差。我试过"clang -分析-Xanalyzer '-v'“作为暗处,告诉分析器更详细-Xanalyzer开关来自手册页。)
发布于 2014-03-31 20:35:08
除了控制台上的文本输出之外:
clang++ --analyze -Xanalyzer -analyzer-output=text main.cpp您可以获得完整的html输出:
clang++ --analyze -Xanalyzer -analyzer-output=html -o html-dir main.cpp此外,还可以选择要启用的特定检查程序。This page列出可用的检查。例如,可以使用以下标志启用alpha组中的所有C++检查:
-Xanalyzer -analyzer-checker=alpha.cplusplushttp://coliru.stacked-crooked.com/a/7746c4004704d4a7
main.cpp:5:1: warning: Potential leak of memory pointed to by 'x'
}
^
main.cpp:4:12: note: Memory is allocated
int *x = new int;
^~~~~~~
main.cpp:5:1: note: Potential leak of memory pointed to by 'x'
}
^很明显前端暴露了
-analyzer-config=
例如。
-analyzer-config -analyzer-checker=alpha.cplusplus它可能比-Xanalyzer更受支持,并且可能被扩展到支持单个检查器的选项:http://lists.cs.uiuc.edu/pipermail/cfe-dev/2014-October/039552.html
发布于 2014-03-13 09:14:35
您正处于正确的轨道上,但是要获得导致bug的完整跟踪,您还需要向clang请求文本格式的输出(不要问原因)。由于您可能需要调整,例如,包含路径或为您的项目定义,我建议您使用clang-check,它充当了clang分析器pass的包装器。它还可以连接到例如scan-build中公开的静态分析器工具。然后你就可以
$ clang-check -analyze -extra-arg -Xclang -extra-arg -analyzer-output=text就像您为这些非常好的工具编写的文档一样,是非常糟糕的。我从Chandler Carruth's GoingNative2013 talk的点点滴滴中拼凑起上面的电话。
发布于 2014-03-13 08:45:55
您必须使用扫描构建:http://clang-analyzer.llvm.org/scan-build.html
输入生成的命令,但使用扫描生成预发送命令。
示例:而不是
make类型
scan-build make而不是
./configure
make类型
scan-build ./configure
scan-build make在启动分析器之前清除生成,否则make将声明已经构建了所有内容,分析器将不会运行。
https://stackoverflow.com/questions/22371789
复制相似问题