SonarQube分析花费了太多时间

时间:2015-01-29 00:23:15

标签: ant jenkins sonarqube analysis findbugs

虽然它似乎指向了大量的代码行(500,000),但工程师不相信为什么需要花费90分钟才能在具有16GB RAM和双CPU的强大Solaris盒子上完成一次声纳分析。请告诉我,如果90分钟的时间太长,代码库的大小。

我正在使用Jenkins git插件从Git中查看代码,运行完整的ant构建,需要45分钟,然后运行' ant sonar'它将数据填充到运行4.1.2的SonarQube服务器,该服务器具有“质量”配置文件'作为由findbugs,checkstyle和PMD组成的默认配置文件。总时间为45 + 90分钟。

当我使用增量选项时,分析时间会下降,并且"参见"只需要分析一个文件。但是,根据文档,diff分析不会填充在数据库中,因此该选项对我的目的而言是无用的。

如何减少每次SonarQube分析所需的时间?

3 个答案:

答案 0 :(得分:4)

如果您的构建已经需要45分钟,那么我对SonarQube分析也花费大量时间并不感到惊讶。 500k LOC对于单个项目来说很重要。

以下是一些缩短时间的方法:

  • 首先确保您在真实数据库上运行SonarQube服务器,而不是在H2
  • 上运行
  • 然后,分析应该非常接近SonarQube DB
    • 如果可能在同一台机器上
    • 如果不可能,分析和数据库应位于相同的高带宽&高速局域网
  • 此外,请确保您只激活相关规则,而不是所有可用规则(有些规则甚至是多余的)

答案 1 :(得分:3)

您基本上需要确定您的瓶颈。我们不了解您的(确切)硬件,您的环境或您的配置 - 因此很难提供建议。

1)。 在我们的案例中(我们的项目有很多小文件),我们确定服务器IO是第一个限制因素 - 因此我们将旧式磁盘与SSD交换(在不同的设置中,SAS磁盘也有很多帮助)和声纳分析极大地加快了。

2)。 下一个限制是CPU(GWT浏览器排列编译),我们用8核CPU替换我们的2核CPU ...

3)。 作为第三件事,我们优化了配置和设置(设置localWorkers等)。对于声纳,我们检查了所有Findbugs,PMD规则花了一些时间但是值得。

因为Fabrice建议您需要检查设置中的限制因素 - 网络可能是一回事......

现在您可能会问如何检测瓶颈 - 这取决于。例如IO我们这样检查:

  • 分析构建/声纳(CPU不忙)时的CPU负载历史记录
  • 我们创建了一个临时RAM驱动器(几GB),并在那里运行构建和声纳分析,证明IO是一个重要因素。此外,在那个设置中,CPU突然满载......

答案 2 :(得分:0)

我发现的两个主要因素是您为要测试的配置文件启用的规则数量以及启用的插件类型。我可以想出两种方法来解决瓶颈的根本原因。

  1. 使用显着减少数量的规则运行分析,并查看需要多长时间然后逐渐增加规则,如果您发现时间差异很大。

  2. 禁用所有启用的插件,只留下必要的插件,看看你是否节省了时间,然后逐步添加一个插件,看看每个启用的插件多少时间会增加分析时间。

  3. 最后,我使用TeamCity,当我的分析进入3小时后,我去了日志,看看是什么程序或插件花时间,这帮助我缩小了哪一个禁用。在这些步骤之后,我将分析从3小时减少到25分钟。