4

IntelliJでNonNullアノテーションをテストするための簡単なコードを以下に示します。

次に、IntelliJ->ファイル->設定->検査->考えられるバグ->一定の条件と例外に移動し、重大度:エラーとして設定します。

そうすることで、「print(null);」という行にマークが付けられます。予想通りのエラーとして。ただし、IntelliJ->ビルド->プロジェクトの再ビルドを実行すると、動作し、エラーや警告は表示されません。

なぜそうなのですか?プロジェクトを構築するときにIntelliJが文句を言わないのはなぜですか?

NonNull違反のリストを表示するにはどうすればよいですか?

NonNull違反が見つかった場合にIntelliJがコンパイルに失敗するように強制する方法はありますか?


注:IntelliJは、firebugアノテーションを考慮に入れるように設定されています(デフォルトのように)。さらに、org.jetbrains.annotations.NotNullを使用すると、まったく同じ結果が得られます。


src / main / java / test / Hello.java

package test;
import edu.umd.cs.findbugs.annotations.NonNull;
public class Hello {
    static public void print(@NonNull Object value) {
        System.out.println("value: " + value.toString());
    }

    static public void main(String[] args) {
        if (args.length > 0) {
            print(args[0]);
        } else {
            print(null);
        }
    }
}

およびpom.xmlファイル:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>hello</groupId>
  <artifactId>hello</artifactId>
  <version>1.0</version>

  <dependencies>
    <dependency>
      <groupId>net.sourceforge.findbugs</groupId>
      <artifactId>annotations</artifactId>
      <version>1.3.2</version>
    </dependency>
    <dependency>
      <groupId>net.sourceforge.findbugs</groupId>
      <artifactId>jsr305</artifactId>
      <version>1.3.7</version>
    </dependency>
  </dependencies>
</project>
4

1 に答える 1

3

コード検査はコンパイラエラーではありません。現時点では、重大度レベルがに設定されていても、検査によって問題が報告された場合にコンパイルに失敗することはありませんerror

プロジェクト全体の結果を取得するには、Analyze|を使用します。Inspect Code適切な検査プロファイルを使用します。

IDEAプロジェクト課題追跡システムにも同様の機能リクエストがありますが、あまり人気がないようです(ほぼ2歳で、投票はありません)。

于 2012-11-09T15:56:45.983 に答える