我维护一个大型(> 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限制;更大的堆没有效果.也许它必须是这种方式,因为纠结/重复分析,我不知道.当然,我知道拆分项目是最好的选择!但这需要相当多的工作;如果我可以在此期间调整一些配置,那就太好了.
有任何想法吗?
解决方法:
我走了你的鞋子:在一个200万的loc项目(原本应该在几年前拆分成子项目),我从未看到包装设计分析在计算的4天内完成…
截至SONAR-2164 (Add an option to skip the quadratic “Package design analysis” phase),我已经提交了一个补丁,允许用户在他们的maven项目文件中设置为true,以便跳过包设计分析.
此修补程序正在等待批准,目前计划包含在v2.7中.