一尘不染

如何使Clang Static Analyzer从命令行输出其工作?

linux

我正在Ubuntu 12.10上运行Clang
3.4(来自http://llvm.org/apt/)。我对一些代码运行了分析器(clang
–analyze),发现了两个问题:

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 –analyze
-Xanalyzer’-v’”作为暗中尝试,以告诉分析仪更加冗长–Xanalyzer开关来自手册页。)


阅读 511

收藏
2020-06-07

共1个答案

一尘不染

除了控制台上的文本输出外:

clang++ --analyze -Xanalyzer -analyzer-output=text main.cpp

您可以获取完整的html输出:

clang++ --analyze -Xanalyzer -analyzer-output=html -o html-dir main.cpp

此外,您可以选择要启用的特定检查器。此页面列出了可用的检查。例如,可以使用标志启用alpha组中的所有C ++检查:

-Xanalyzer -analyzer-checker=alpha.cplusplus

http://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

2020-06-07