0

私はAntでSonarを使用しており、Coberturaと単体テストの結果をインポートし、「Sonar+FindBugs」を設定してコード品質分析を実行しています。私は以前、Sonarを使用して(大規模な)プロジェクトを分析することができました。わからない、多分私はいくつかの変更を行ったが、今分析はもう終わっていない。SonarはCoberturaレポートのインポートに成功し、デコレータを実行しようとしましたが、ハングします(数時間)。

p.PhasesTimeProfiler-デコレータを実行します。..

私はこれをWindows7とRHEL6の両方のマシンでテストしました。ANTjavaヒープを2048Mに増やしました。設定を小さくすると、通常、ある時点でJavaヒープが例外を超えてしまいます。プロセスは現在実行中であり、プロセスは2266Mのメモリを使用しています。

何か案は?:)

Sonarがハングする前の最後の行は以下のとおりです(デバッグモード)。

[sonar:sonar] 10:25:24.348 DEBUG raphMetricAggregator - Checking for resource type: CLA
[sonar:sonar] 10:25:24.350 DEBUG emDashBoardDecorator - Checking for resource type: CLA
[sonar:sonar] 10:25:24.505 DEBUG raphMetricAggregator - Checking for resource type: CLA
[sonar:sonar] 10:25:24.505 DEBUG emDashBoardDecorator - Checking for resource type: CLA
[sonar:sonar] 10:25:24.986 DEBUG raphMetricAggregator - Checking for resource type: CLA
[sonar:sonar] 10:25:24.986 DEBUG emDashBoardDecorator - Checking for resource type: CLA
[sonar:sonar] 10:25:24.994 DEBUG raphMetricAggregator - Checking for resource type: CLA
[sonar:sonar] 10:25:24.995 DEBUG emDashBoardDecorator - Checking for resource type: CLA
[sonar:sonar] 10:25:25.206 DEBUG raphMetricAggregator - Checking for resource type: CLA
[sonar:sonar] 10:25:25.206 DEBUG emDashBoardDecorator - Checking for resource type: CLA
[sonar:sonar] 10:25:25.214 DEBUG raphMetricAggregator - Checking for resource type: CLA
[sonar:sonar] 10:25:25.214 DEBUG emDashBoardDecorator - Checking for resource type: CLA

Sonar AntターゲットでSQLが冗長に設定されている場合、SQLがハングする最後のSQLステートメントは次のようになります。

[sonar:sonar] 10:00:31.855 DEBUG    org.hibernate.SQL - select snapshot0_.id as
id7_, snapshot0_.build_date as build2_7_, snapshot0_.created_at as created3_7_,
snapshot0_.depth as depth7_, snapshot0_.islast as islast7_, snapshot0_.parent_sn
apshot_id as parent6_7_, snapshot0_.path as path7_, snapshot0_.period1_date as p
eriod8_7_, snapshot0_.period1_mode as period9_7_, snapshot0_.period1_param as pe
riod10_7_, snapshot0_.period2_date as period11_7_, snapshot0_.period2_mode as pe
riod12_7_, snapshot0_.period2_param as period13_7_, snapshot0_.period3_date as p
eriod14_7_, snapshot0_.period3_mode as period15_7_, snapshot0_.period3_param as
period16_7_, snapshot0_.period4_date as period17_7_, snapshot0_.period4_mode as
period18_7_, snapshot0_.period4_param as period19_7_, snapshot0_.period5_date as
 period20_7_, snapshot0_.period5_mode as period21_7_, snapshot0_.period5_param a
s period22_7_, snapshot0_.purge_status as purge23_7_, snapshot0_.qualifier as qu
alifier7_, snapshot0_.project_id as project25_7_, snapshot0_.root_snapshot_id as
 root26_7_, snapshot0_.root_project_id as root27_7_, snapshot0_.scope as scope7_
, snapshot0_.status as status7_, snapshot0_.version as version7_ from snapshots
snapshot0_ where snapshot0_.islast=? and snapshot0_.project_id=(select resourcem
o1_.id from projects resourcemo1_ where resourcemo1_.kee=?)
[sonar:sonar] 10:00:31.899 DEBUG    org.hibernate.SQL - select snapshotso0_.id a
s id13_, snapshotso0_.data as data13_, snapshotso0_.snapshot_id as snapshot3_13_
 from snapshot_sources snapshotso0_ where snapshotso0_.snapshot_id=?

2回目の実行では、これも取得しました。

[sonar:sonar] 11:16:40.149 DEBUG b.b.JdbcDriverHolder - To prevent a memory leak
, the JDBC Driver [com.mysql.jdbc.Driver] has been forcibly deregistered

Javaヒープサイズを増やしておらず、Jenkinsを介してSonar Antターゲットを実行していない場合、次のようになります。

java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:2746)
    at java.util.ArrayList.ensureCapacity(ArrayList.java:187)
    at java.util.ArrayList.add(ArrayList.java:378)
    at     org.sonar.plugins.core.timemachine.ViolationTrackingDecorator.mapViolations(ViolationTrackingDecorator.java:131)
at org.sonar.plugins.core.timemachine.ViolationTrackingDecorator.decorate(ViolationTrackingDecorator.java:70)
at org.sonar.batch.phases.DecoratorsExecutor.executeDecorator(DecoratorsExecutor.java:79)
at org.sonar.batch.phases.DecoratorsExecutor.decorateResource(DecoratorsExecutor.java:70)
at org.sonar.batch.phases.DecoratorsExecutor.decorateResource(DecoratorsExecutor.java:63)
at org.sonar.batch.phases.DecoratorsExecutor.decorateResource(DecoratorsExecutor.java:63)

上記のJavaヒープスペースの問題は、Antを2048Mを使用するように増やしても発生しませんが、最初のエラー出力のように、デコレータがハングします。

4

1 に答える 1

1

MySQLデータベースからプロジェクト全体を削除せずにこの問題を解決できなかったことを報告して申し訳ありません。ぶら下がった後、2つの変更を加えたことに気づきました。1)プロジェクトキーを別のものに変更したようです。2)品質プロファイルをデフォルトから「Sonar+findbugs」に変更しました。

ソナーは4回の実行(つまり4日)後に動作を停止したので、初期設定を変更せずにこれが機能するかどうかを確認します。今日の朝の最初の走行は大丈夫だった。

于 2012-10-11T06:38:16.367 に答える