2012-01-10 104 views
5

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

这就是为什么我正在寻找一种工具,可以分析仅来自最新提交(这对我的知识Sonar不支持)代码,或者只有最后X小时/天/随你。

我已经找到了截止插件声纳,这理应做什么,我想(只检查从已经在某个日期之后被修改的文件中的代码),但:

  1. 我还需要检查它的工作原理
  2. 检查它是否支持动态日期更改(所以它只会考虑代码从最后一天,而不是我必须每天手动更改排除日期)。
  3. 它似乎并没有得到很好的支持(最后的改变在2010年,它仍然是0.1版本)

这将是完美的,如果只检查从上次的代码提交,但还没在任何地方都看不到。

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

+0

您是否正在寻找免费工具? – kosa 2012-01-10 16:13:27

+0

啊是的,我忘了提及:它必须是免费的。不一定非常完美,但必须是免费的。 – 2012-01-10 16:38:11

回答

3

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

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

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

+0

希望我能得到你所说的所有/任何装备:)现在,我必须满足每天使用cutoff插件制作的内容。我猜想比没有好。 – 2012-01-19 13:04:51

+0

尝试通过不投资于这些东西来总结您失去的东西您会惊讶地发现,您可以节省多少时间进行改进。 – jessehouwing 2012-01-22 11:25:18

0

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

  1. PMD
  2. Checkstyle
  3. FindBugs

高的机会,你会发现在它的声纳有用的替代。

您没有提及是否使用Continuous Integration工具。可能你会需要它运行,以便使用这些工具运行检查。

+0

是的,我们之前使用过所有3个,但切换到现在完成所有工作的声纳。同样作为CI我们使用哈德森。 – 2012-01-19 15:00:09

+0

那么也许你只需要减少运行检查的次数? – altern 2012-01-19 15:23:45

+0

是的,我已经做了2个改进:首先我不在哈德森运行一个单独的声纳工作,它将首先构建整个应用CI风格,然后再为声纳做它,但是我开始建立一个声纳后,独联体国家。然后我不必运行测试,我只分析最新的变化。整个事情现在在10分钟左右,我认为生病会得到更好的结果。 – 2012-01-19 15:44:34

0

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

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