当前位置: 首页 > 知识库问答 >
问题:

如何用clang为C代码生成报告

鱼志学
2023-03-14

按照来自主要clang静态分析器网页(http://clang-analyzer.llvm.org/scan-build.html)的说明…

我有一个小的C文件,它的错误非常多(badcode.C):

int main(int argc, char ** argv)
{
    int j;
    int a[4];
    puts(a[j]);
    return 'a';
}

为了了解clang静态分析器(scan-build)是如何工作的,我运行了:

扫描构建-v clang坏代码.c

它输出:

scan-build: Emitting reports for this run to '/tmp/scan-build-2012-08-17-1'.
scan-build: 'clang' executable not found in '/usr/share/clang/scan-build/bin'.
scan-build: Using 'clang' from path: /usr/bin/clang
badcode.c:7:2: warning: implicit declaration of function 'puts' is invalid in C99 [-Wimplicit-function-declaration]
        puts(a[j]);
        ^
1 warning generated.
scan-build: Removing directory '/tmp/scan-build-2012-08-17-1' because it contains no reports.

好的,太好了,叮当给出了一点警告,但仍然产生了a.out。为什么它不产生报告?对于任何静态分析器来说,单位化变量 j 都应该是一个显而易见的危险信号——为什么不报告它?

我只是使用了错误的命令行参数吗?

共有1个答案

郜光明
2023-03-14

试试这个:

scan build-k-V-o扫描报告xcodebuild clean build-configuration Debug-sdk[sdk version]-xcconfig=[xconfig证书文件]

例如: scan-build -k -v -o scan-reports xcodebuild clean build -configuration Debug -sdk iphoneos5.0 -xcconfig=“/Users/username/config.xcconfig”

这应该创建一个 html 输出。

 类似资料:
  • 我需要一个示例代码来学习如何从clang::ASTContext生成C代码。 我用c代码创建了ast,并在AST中做了一些更改,现在我想再次生成代码。

  • 我承认这个问题的答案可能是“一些非常具体的魔法”,但我对我在这里观察到的有点震惊。我想知道是否有人了解这些类型的优化是如何工作的。我发现编译器设计非常有趣,我真的无法想象这是如何工作的。我肯定答案在clang源代码的某个地方,但我甚至不知道我会去哪里看。 我是大学一堂课的助教,最近我被要求帮助解决一个简单的家庭作业问题。这让我走上了一条有趣的道路...... 问题很简单:在x86_64程序集中,编

  • ​clang-format 是个自动格式化 C/C++/Objective-C 代码的工具, 可以让开发人员不需要担心代码审查期间的样式问题. 强烈建议在打开请求之前格式化已更改的C ++代码,这将节省您和审阅者的时间。 你可以通过 npm install -g clang-format 安装 clang-format 和 git-clang-format. 根据 Electron C++ 代码样

  • 叮当 是自动检查 C/C++/Objective-C 代码的样式冲突、编程 错误和最佳实践的工具。 Electron's clang-tidy integration is provided as a linter script which can be run with npm run lint:clang-tidy. While clang-tidy checks your on-disk f

  • 我在使用clang的代码完成机制时正在研究潜在的代码完成加速。下面描述的流程是我在Anders Bakken的rtages中发现的。 翻译单元由守护程序监控文件解析以查找更改。这是通过调用和相关函数(,)完成的。当用户在源文件中的给定行和列处请求完成时,守护程序将源文件的最后保存版本和当前源文件的缓存翻译单元传递到。(Clang Code完整文档)。 传递给(来自CompletionThread: