どのように私はソナーのパッケージデザイン分析をスピードアップできますか?

StackOverflow https://stackoverflow.com/questions/3435687

質問

私は、大規模な(>50万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バウンドです。大きなヒープは効果がありません。多分それはもつれ/重複解析のため、私にはわからないので、このようにする必要があります。もちろん、私はプロジェクトまで分割が最良の選択肢であることを知っています!しかし、それはかなりの量の作業がかかります。私はその間にいくつかの設定を微調整することができれば、それはいいだろう。

任意のアイデア?

役に立ちましたか?

解決 2

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

」...問題は、DBから来るが、カットにすべてのパッケージの依存関係を特定するためのアルゴリズムから来ていません。...あなたはいくつかのモジュールで、このプロジェクトをカットするために管理している場合、あなたの問題が消えます。 「

私は、比較的大きなパッケージを除外することで、この理論をテストし、確かにそれは劇的に低下しました。このアプローチは、このような大規模なコードベースで可能であると良いと考えられますので、理論的には接続数は、パッケージの数と二次成長ができます。

他のヒント

私はあなたの靴で歩いた:200万+ LOCプロジェクトに(つまりは確かに、数年前にサブプロジェクトに分割されているはずです)、私は計算... SONAR-2164の

として(次「パッケージデザイン分析」フェーズをスキップするオプションを追加します) に、私は、ユーザーがパッケージデザイン分析はスキップされているように彼らのMavenプロジェクトファイルでtrueに設定することができるようになるパッチを提出しました。 このパッチは承認が保留されており、現在V2.7に含めるに予定されています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top