【问题标题】:Clang static analyzer and continuous integration?Clang 静态分析器和持续集成?
【发布时间】:2026-01-04 14:00:01
【问题描述】:

事实证明,Clang 静态分析器在发现实际问题方面比 PC-Lint 和其他 Lint 变体和类似软件可靠得多(在阅读背景时并不奇怪)。 scan-build 方法即使对于自动构建也很好,但它缺少一个我没有找到任何信息的重要特性。我如何才能确定最新的提交是否会恶化整体代码质量?!当然,我必须比较之前运行的错误计数。但是解析 HTML(也给出了伪随机命名方案)似乎很奇怪。

在这种情况下,有哪些方法可以有意义地集成静态分析器?

注意:在这里只运行ccc-analyzer 似乎也没有多大意义。尽管在这种情况下,输出是纯文本的(即不是 HTML),因此更容易解析。但我愿意接受建议,即使它们涉及在单个文件上运行 ccc-analyzer 而不是在整个 make 进程上运行 scan-build

【问题讨论】:

    标签: continuous-integration clang static-analysis clang-static-analyzer


    【解决方案1】:

    你提到你正在使用持续集成,但你没有提到你正在使用什么平台。我认为您正在寻找的应该在平台报告中。大多数 CI 平台将跟踪许多用于报告和绘图的关键指标。如果你弄清楚你的系统是如何工作的,你应该能够跟踪每个构建的错误计数,然后你的图表应该提供一个简单的视觉线索,让数字随着时间的推移而上升。或者,您可以使用您的平台 API 来确定当前构建中的值是否高于上次构建中的值。

    【讨论】:

    • 如果平台是指操作系统:Windows 和 Linux,对于初学者来说,32 位和 64 位 x86 就足够了。 CI 系统目前是专有的。基本上一切都会发生;)
    • 不,我指的是 CI 平台。大多数系统已经具有随时间收集统计数据的机制。整个想法是您运行 Clang 的每个构建,提取错误的数量并将该值保存为构建的工件,这样您就可以绘制出随时间的变化......或其他任何东西。一些系统 (Jenkins) 甚至有一些机制,如果值上升或超过某些阈值,您可能会导致当前构建失败