2

Findbugsプラグインを使用してEclipse Java EE juno SR2 win32を実行しています。

次のコードサンプルでは、​​FindBugs で結果を表示できます。

catch (OutOfMemoryError e) {
     tryAgain = true;
     log.error("try to recover", e);
     System.gc(); // not so happy about this
}

で、解説はこちら

Bug: [..] forces garbage collection; extremely dubious except in benchmarking code

Code explicitly invokes garbage collection. Except for specific use in benchmarking, this is very dubious.

In the past, situations where people have explicitly invoked the garbage collector in routines such as close or 
finalize methods has led to huge performance black holes. Garbage collection can be expensive. Any situation that forces 
hundreds or thousands of garbage collections will bring the machine to a crawl.

Confidence: High, Rank: Of Concern (16)
Pattern: DM_GC 
Type: Dm, Category: PERFORMANCE (Performance)

では、この行にチェックされないように注釈を付けるにはどうすればよいですか?

やってみた(ソース

@edu.umd.cs.findbugs.annotations.SuppressWarnings("DM_GC")
System.gc();

これは機能していないので、メソッドに移動しました

@edu.umd.cs.findbugs.annotations.SuppressWarnings("DM_GC")
private bla(){

「eduは型に解決できません」と言っているので、次を試しました:

@SuppressWarnings("DM_GC")
private bla(){

そして、「サポートされていない @SuppressWarnings("DM_GC")」を受け取りました

これは、findbugs バグの解決に関する要求ではなく、特定のバグを無効にする方法です。

ありがとうございました!

参考までに: gc を呼び出すのはあまり良い考えではないことはわかっています。

4

1 に答える 1

4

「edu を型に解決できません」

これは、FindBugs jar をプロジェクトに追加していないためです。Maven を使用している場合は、この依存関係を pom.xml に追加します。

<dependency>
    <groupId>com.google.code.findbugs</groupId>
    <artifactId>annotations</artifactId>
    <version>2.0.0</version>
</dependency>

Maven を使用しない場合は、jar をクラスパスに手動で追加します。その後、FindBugs アノテーションSuppressWarningsが検出され、問題は表示されなくなります。

于 2013-05-23T14:56:41.383 に答える