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

时间:2012-01-10 16:09:57

标签: svn code-analysis static-analysis sonarqube

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

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

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

  1. 我仍然需要检查它是否有效
  2. 检查它是否支持动态日期更改(因此它只考虑来自最后一天的代码而不是我每天必须手动更改排除日期)。
  3. 它似乎没有得到很好的支持(2010年的最后一次更改,它仍然是版本0.1)
  4. 如果只检查上次提交的代码,那将是完美的,但我没有在任何地方看到过。

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

3 个答案:

答案 0 :(得分:3)

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

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

您还可以在构建服务器上使用伙伴构建/验证搁置集构建,以将构建时间卸载到可在开发人员之间共享的其他计算机上。

答案 1 :(得分:0)

静态分析也有这样的工具:

  1. PMD
  2. Checkstyle
  3. FindBugs
  4. 很有可能你会发现它是声纳的有用替代品。

    您没有提及是否使用持续集成工具。可能您需要它并运行才能使用这些工具运行检查。

答案 2 :(得分:0)

我意识到我迟到了,但还有另一种可能与你相关的工具:Teamscale

Teamscale连接到您的存储库(例如Git或SVN),并在每次提交后立即逐步分析您的代码。有了这个,您几乎可以在提交后立即获得有关新/固定代码问题的反馈。您还可以查看代码的完整历史记录,黑名单误报等等。 (完全披露:我是Teamscale开发人员)