用于增量静态分析代码的工具?

Mat*_*zyk 5 svn code-analysis static-analysis sonarqube

是否有任何免费的工具允许对代码进行增量静态分析(对于SVN,最好是Git)?目前我们正在使用Sonar(2.12我认为?)但问题是需要分析我们项目中所有代码的时间是40-60分钟.我们需要增加它,因为我们有几个分支在不同的子项目上工作.

这就是为什么我正在寻找一种工具,可以只从最新的提交(据我所知的Sonar不支持)或仅在过去X小时/天/之内修改的代码分析代码.

我已经找到了Sonar的Cutoff Plugin,据说可以做我想要的(只检查文件中某个日期之后修改过的代码)但是:

  1. 我仍然需要检查它是否有效
  2. 检查它是否支持动态日期更改(因此它只会考虑来自最后一天的代码而不是我必须每天手动更改排除日期).
  3. 它似乎没有得到很好的支持(2010年的最后一次更改,它仍然是版本0.1)

如果它只检查上次提交的代码,那将是完美的,但我还没有看到任何地方.

另外作为一个附带问题:在每次提交(即使用哈德森声纳插件)之后运行分析是好事还是应该避免?在我的上一个团队,我们有声纳这样运行,如果我们"破坏它"我们会得到一个即时电子邮件(添加了代码的主要/关键).这非常方便,因为我们知道谁有错(基于提交的信息).或者我们应该更少地分析它(让我们说每周一次)?在那种情况下,我将不得不检查Sonar是否能够说出谁犯了有问题的代码.

jes*_*ing 3

很少,特别是因为许多工具/规则依赖于遍历可能的堆栈来限制误报的数量。因此,一个程序集的更改也需要重新评估调用程序集,这并不像从外部看起来那么简单。

为了加快静态分析速度,请考虑投资内存磁盘或 SSD 来存储源代码和二进制文件。使用多核计算机、拥有充足的内存并尽可能运行这些工具的 x64 版本。其中许多工具首先受 I/O 限制,然后受 CPU 限制。大多数改进可以通过减少系统的延迟和吞吐量以及所需的交换量(通过拥有足够的内存)来进一步减少 I/O。

您还可以在构建服务器上使用伙伴构建/验证搁置集构建,将构建时间转移到可以在开发人员之间共享的不同机器。