如何加快Sonar的包装设计分析?

时间:2010-08-08 19:13:35

标签: java maven-2 performance hudson-plugins sonarqube

我维护一个大型(> 500,000 LOC)Java项目的构建过程。我刚刚在夜间构建结束时添加了一个声纳分析步骤。但是执行需要三个多小时...这不是一个严重的问题(它发生在一夜之间),但我想知道我是否可以加快速度(这样我可以在工作时间内手动运行它,如果需要的话) )。

任何Sonar,Hudson,Maven或JDK选项,我可以调整一下,这可能会改善这种情况吗?

[INFO]  -------------  Analyzing Monolith
[INFO]  Selected quality profile : Sonar way, language=java
[INFO]  Configure maven plugins...
[INFO]  Sensor SquidSensor...
[INFO]  Java AST scan...
[INFO]  Java AST scan done: 103189 ms
[INFO]  Java bytecode scan...
... (snip)
[INFO]  Java bytecode scan done: 19159 ms
[INFO]  Squid extraction...
[INFO]  Package design analysis...
... (over three hour wait here)
[INFO]  Package design analysis done: 12000771 ms
[INFO]  Squid extraction done: 12277075 ms
[INFO]  Sensor SquidSensor done: 12404793 ms

1200万毫秒= 200分钟。那是很久了!相比之下,声纳步骤之前的编译和测试步骤不到10分钟。据我所知,这个过程受CPU限制;更大的堆没有效果。也许它必须是这种方式,因为纠结/重复分析,我不知道。当然,我知道拆分项目是最好的选择!但这需要相当多的工作;如果我可以在此期间调整一些配置,那就太好了。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

我走了你的鞋子:在一个200万+ loc项目上(确实应该在几年前分成子项目),我从未看到包装设计分析在计算后的4天内完成......

SONAR-2164 (Add an option to skip the quadratic "Package design analysis" phase)开始,我提交了一个补丁,允许用户在其maven项目文件中设置为true,以便跳过包设计分析。 此补丁正在等待批准,目前计划包含在v2.7中。

答案 1 :(得分:1)

列表上的Freddy Mallet:

“......问题不是来自数据库,而是来自算法,以识别要切割的所有包依赖关系....如果你设法在几个模块中削减这个项目,那么你的问题就会消失。 “

我通过排除一个相对较大的包来测试这个理论,并且肯定会大幅下降。从理论上讲,连接数可能会随着包的数量呈二次方式增长,因此这种方法可能与这么大的代码库一样好。