25

「Findbugs」をプロファイルとして使用して Sonar に大規模な Java プロジェクトをデプロイすると、以下のエラーが発生します。

Caused by: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError:
Java heap space

私がこれを解決しようとしたこと:

  1. %SONAR_RUNNER_OPTS% を -Xms256m -Xmx1024m に置き換えて、ソナー ランナー バット ファイルのヒープ サイズを増やしました。
  2. 「sonar.findbugs.effort」パラメーターを「最小」としてソナー グローバル パラメーターに入れます。

しかし、上記の方法は両方ともうまくいきませんでした。

4

8 に答える 8

14

おそらく以前の回答/コメントを飲み込むのに苦労しているため、同じ問題があり、非常に異なる解決策を見つけました。1,000 万行のコード (F16 戦闘機よりも多いコード) を使用すると、1 行あたり 100 文字 (非常に大きなサイズ) の場合、コード ベース全体を 1 GB のメモリにロードできます。8GBのメモリを設定しましたが、それでも失敗しました。なんで?

回答: コミュニティの Sonar C++ スキャナには、拡張子に文字 'c' が含まれるすべてのファイルを検出するというバグがあるようです。これには .doc、.docx、.ipch などが含まれます。したがって、メモリが不足している理由は、300 MB の純粋なコードであると考えているファイルを読み込もうとしているが、実際には無視する必要があるためです。

解決策: プロジェクト内のすべてのファイルで使用されている拡張子を見つけます (詳細については、こちらを参照してください)。

dir /s /b | perl -ne 'print $1 if m/\.([^^.\\\\]+)$/' | sort -u | grep c

次に、これらの他の拡張子を除外として sonar.properties ファイルに追加します。

sonar.exclusions=**/*.doc,**/*.docx,**/*.ipch

次に、メモリ制限を通常の量に戻します。

%JAVA_EXEC% -Xmx1024m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=128m %SONAR_RUNNER_OPTS% ...
于 2013-12-09T22:05:03.927 に答える
13

これは私のために働いています:

SONAR_RUNNER_OPTS="-Xmx3062m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=128m"

sonar-runner(.bat) ファイルに直接設定します

于 2013-06-26T07:40:21.590 に答える
7

Mavenでソナーを実行しているときに同じ問題が発生しました。私の場合、ソナーを個別に呼び出すのに役立ちました:

mvn clean install && mvn sonar:sonar

それ以外の

mvn clean install sonar:sonar

http://docs.sonarqube.org/display/SONAR/Analyzing+with+Maven

備考: 私のソリューションは Maven に接続されているため、これは質問に対する直接的な回答ではありません。しかし、それは、つまずいた他のユーザーを助けるかもしれません.

于 2014-08-31T09:06:12.040 に答える
2

最初にいくつかの Findbugs ルールを使用して独自の品質プロファイルを作成し、それから OutOfMemoryError に達するまで徐々に追加していくためにできること. コードが違反しているために、これらすべてが失敗するルールはおそらく 1 つだけです。このルールを無効にすると、確実に機能します。

于 2012-10-19T06:42:39.063 に答える
2

I know this thread is a bit old but this info might help someone.

For me the problem was not like suggested by the top-answer with the C++ plugin. Instead my problem was the Xml-Plugin (https://docs.sonarqube.org/display/PLUG/SonarXML) after I deactivated it the analysis worked again.

于 2016-09-07T11:31:00.357 に答える
1

sonar.properties ファイルで対応する Java プロセスの-Xmxメモリ設定を増やして、適切なプロセスに割り当てられる最大メモリを増やすことで、この問題を解決でき ます。

SonarQube/conf/sonar.properties

以下の行のコメントを外し、必要に応じてメモリを増やします。

For Web: Xmx5123m -Xms1536m -XX:+HeapDumpOnOutOfMemoryError
For ElasticSearch: Xms512m -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError
For Compute Engine: sonar.ce.javaOpts=-Xmx1536m -Xms128m -XX:+HeapDumpOnOutOfMemoryError
于 2019-10-20T10:29:46.200 に答える
0

問題はFindBugs側にあります。おそらく多くの違反がある大規模なプロジェクトを分析していると思います。同じ問題を抱えているSonarのメーリングリストの2つのスレッドを見てください。自分で試すことができるアイデアがいくつかあります。

http://sonar.15.n6.nabble.com/java-lang-OutOfMemoryError-Java-heap-space-td4898141.html

http://sonar.15.n6.nabble.com/java-lang-OutOfMemoryError-Java-heap-space-td5001587.html

于 2012-10-19T06:44:07.867 に答える