4

大規模な (> 500,000 LOC) Java プロジェクトのビルド プロセスを管理しています。夜間ビルドの最後にソナー分析ステップを追加しました。しかし、実行には3時間以上かかります...これは深刻な問題ではありません(夜間に発生します)が、速度を上げることができるかどうか知りたいです(必要に応じて勤務時間中に手動で実行できるようにするため) )。

状況を改善するために微調整できるソナー、ハドソン、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 バウンドです。ヒープを大きくしても効果はありません。もつれ/重複分析のために、このようにしなければならないのかもしれませんが、わかりません。もちろん、プロジェクトを分割することが最善の選択肢であることはわかっています。しかし、それにはかなりの作業が必要です。それまでの間、いくつかの構成を微調整できれば、それは素晴らしいことです。

何か案は?

4

2 に答える 2

3

私はあなたの立場に立って歩きました: 200 万以上の loc プロジェクト (実際には数年前にサブプロジェクトに分割されるべきでした) で、パッケージデザインの分析が計算から 4 日以内に完了するのを見たことがありません...

SONAR-2164 (2 次の「パッケージ デザイン分析」フェーズをスキップするオプションを追加) の時点で、パッケージ デザイン分析がスキップされるように、ユーザーが Maven プロジェクト ファイルで true を設定できるようにするパッチを提出しました。このパッチは承認待ちで、現在 v2.7 に含める予定です。

于 2011-02-26T17:24:40.433 に答える
1

リストのフレディ・マレットから:

「...問題はDBからではなく、カットするすべてのパッケージ依存関係を特定するアルゴリズムから発生します。...このプロジェクトをいくつかのモジュールにカットできれば、問題は解消されます。」

比較的大きなパッケージを除外してこの理論をテストしたところ、確かに劇的に低下しました. 理論的には、接続の数はパッケージの数に応じて二次的に増加する可能性があるため、このアプローチは、このような大規模なコードベースで可能な限り優れています。

于 2010-08-28T00:34:13.780 に答える