
エラーが発生しやすいサポートは、Googleのエラーが発生しやすいピクニックオピニオンの拡張です。これは、コードの品質を向上させることを目的としており、保守性、一貫性、一般的な落とし穴の回避に焦点を当てています。
エラーが発生するのは、コンパイル時に一般的なプログラミングミスをキャッチするJavaの静的分析ツールです。
エラーが発生しやすい(サポート)、実際にエラーが発生しやすいエラーの使用を開始する方法、ピクニックでの使用方法の詳細については、実際にエラーが発生しやすいバグを自動化するカンファレンストークをご覧ください。また、ブログ投稿のピクニックラブエラーが発生しやすいことをチェックすることを検討してください。高品質で一貫したJavaコードを作成します。
開始•エラーが発生しやすいサポートの開発•それがどのように機能するか•貢献
このライブラリは、エラーが発生しやすい上に構築されています。それを使用するには、以下のMavenまたはGradleのインストールガイドをお読みください。ライブラリは、ビルドをJDK 17以上を使用して実行することを要求していますが、Javaの古いバージョンをターゲットにするビルドをサポートします。
まず、Error Proneのインストールガイドに従ってください。
次に、 pom.xmlファイルを編集して、 maven-compiler-pluginのannotationProcessorPathsに1つ以上のエラーが発生しやすいサポートモジュールを追加します。
< build >
< pluginManagement >
< plugins >
< plugin >
< groupId >org.apache.maven.plugins</ groupId >
< artifactId >maven-compiler-plugin</ artifactId >
<!-- Prefer using the latest release. -->
< version >3.12.0</ version >
< configuration >
< annotationProcessorPaths >
<!-- Error Prone itself. -->
< path >
< groupId >com.google.errorprone</ groupId >
< artifactId >error_prone_core</ artifactId >
< version >${error-prone.version}</ version >
</ path >
<!-- Error Prone Support's additional bug checkers. -->
< path >
< groupId >tech.picnic.error-prone-support</ groupId >
< artifactId >error-prone-contrib</ artifactId >
< version >${error-prone-support.version}</ version >
</ path >
<!-- Error Prone Support's Refaster rules. -->
< path >
< groupId >tech.picnic.error-prone-support</ groupId >
< artifactId >refaster-runner</ artifactId >
< version >${error-prone-support.version}</ version >
</ path >
</ annotationProcessorPaths >
< compilerArgs >
< arg >
-Xplugin:ErrorProne
<!-- Add other Error Prone flags here. See
https://errorprone.info/docs/flags. -->
</ arg >
< arg >-XDcompilePolicy=simple</ arg >
</ compilerArgs >
<!-- Enable this if you'd like to fail your build upon warnings. -->
<!-- <failOnWarning>true</failOnWarning> -->
</ configuration >
</ plugin >
</ plugins >
</ pluginManagement >
</ build >まず、 gradle-errorprone-pluginのインストールガイドに従ってください。
次に、 build.gradleファイルを編集して、1つ以上のエラーが発生しやすいサポートモジュールを追加します。
dependencies {
// Error Prone itself.
errorprone( " com.google.errorprone:error_prone_core: ${ errorProneVersion } " )
// Error Prone Support's additional bug checkers.
errorprone( " tech.picnic.error-prone-support:error-prone-contrib: ${ errorProneSupportVersion } " )
// Error Prone Support's Refaster rules.
errorprone( " tech.picnic.error-prone-support:refaster-runner: ${ errorProneSupportVersion } " )
}
tasks . withType( JavaCompile ) . configureEach {
options . errorprone . disableWarningsInGeneratedCode = true
// Add other Error Prone flags here. See:
// - https://github.com/tbroyer/gradle-errorprone-plugin#configuration
// - https://errorprone.info/docs/flags
}次の例を考えてみましょう。
import com . google . common . collect . ImmutableSet ;
import java . math . BigDecimal ;
public class Example {
static BigDecimal getNumber () {
return BigDecimal . valueOf ( 0 );
}
public ImmutableSet < Integer > getSet () {
ImmutableSet < Integer > set = ImmutableSet . of ( 1 );
return ImmutableSet . copyOf ( set );
}
}インストールが成功した場合、上記のコードをMavenで構築すると、2つのコンパイラ警告が得られます。
$ mvn clean install
...
[INFO] Example.java:[9,34] [Refaster Rule] BigDecimalRules.BigDecimalZero: Refactoring opportunity
(see https://error-prone.picnic.tech/refasterrules/BigDecimalRules#BigDecimalZero)
Did you mean ' return BigDecimal.ZERO; ' ?
...
[WARNING] Example.java:[13,35] [IdentityConversion] This method invocation appears redundant ; remove it or suppress this warning and add a comment explaining its purpose
(see https://error-prone.picnic.tech/bugpatterns/IdentityConversion)
Did you mean ' return set; ' or ' @SuppressWarnings("IdentityConversion") public ImmutableSet<Integer> getSet() { ' ?
...ここで2つのことがキックしています:
BugChecker 。BigDecimal.valueOf(0)およびnew BigDecimal(0)からBigDecimal.ZEROの形式の表現を書き換えることができるrefasterルール。すべてのバグチェックとrefasterルールを必ずチェックしてください。
これはMavenプロジェクトであるため、 mvn clean install実行すると、完全にクリーンなビルドを実行し、ライブラリをローカルMavenリポジトリにインストールします。
変更を加えると、静的コード分析によって放出される警告またはエラーによりビルドが失敗する可能性があります。以下にリストされているフラグとコマンドを使用すると、そのようなケースを自動的に修正するか、(大量のケースで)抑制または(大量の場合)。利用可能なオプションを慎重に確認してください。これにより、開発時間の大部分を節約できます。
関連するMavenビルドパラメーター:
-Dverification.warn 、可能な場合は、さまざまなプラグインとJavaコンパイラが脂肪性ではないJavaコンパイラによって放出される警告とエラーを行います。-Dverification.skip 、さまざまな非必須プラグインを無効にし、最小限のチェック(すなわち、糸くずのない、エラーが発生しやすいチェックなど)でコードをコンパイルします。-Dversion.error-prone=some-version指定されたバージョンのエラーが発生した場合にビルドを実行します。これは、地元で構築されたエラーが発生しやすいスナップショットをテストする場合に役立ちます。-Perror-prone-fork 、JitPackでホストされたピクニックのエラーが発生しやすいフォークを使用してビルドを実行します。このフォークには、一般に、最新のエラーが発生しやすいリリースに加えていくつかの変更が含まれています。-Pself-checkこのプロジェクトで定義されたチェックを実行します。 Google/エラーが発生しやすい#3301のリリースが保留されている場合、このフラグは現在、 -Perror-prone-forkと組み合わせて使用する必要があります。その他の非常に関連性の高いコマンド:
mvn fmt:formatはgoogle-java-formatを使用してコードをフォーマットします。./run-full-build.shプロジェクトを2回構築します。ここで、2番目のパスは、このプロジェクト内で定義されたルールとコードのエラーが発生しやすいフォークとコンプライアンスとの互換性を検証します。 (PRチェックもこの検証を実行するため、プルリクエストを開く前にこれを実行することを検討してください。)./apply-error-prone-suggestions.shは、このプロジェクトにエラーが発生しやすいサポートコードの提案を適用します。このコマンドを実行する前に、プロジェクト( mvn clean install )をインストールしていることを確認し、現在の作業ディレクトリにステージングされていないまたはコミットされていない変更が含まれていないことを確認してください。./run-branch-mutation-tests.sh 、上流のデフォルトブランチに対して変更されたコードに対して突然変異テストを実行するためにPitestestを使用します。結果は、それぞれのtarget/pit-reports/index.htmlファイルを開くことでレビューできます。 ./run-mutation-tests.sh使用して、現在の作業ディレクトリのすべてのコードに対して突然変異テストを実行できます。詳細については、Pit Mavenプラグインを確認してください。Intellijのアイデアでプロジェクトのテストを実行すると、次のエラーが表示される場合があります。
java: exporting a package from system module jdk.compiler is not allowed with --release
これが発生した場合は、 [> [build]、build、execution、deployment-> compiler-> javaコンパイラに移動し、オプションの使用を解除し、クロスコンパイル用の[リリース]オプション(Java 9以降)に移動します。詳細については、Idea-288052を参照してください。
このプロジェクトは、追加のBugChecker実装を提供します。
バグを報告または修正したり、新機能を提案または追加したり、ドキュメントを改善したりしたいですか?それは素晴らしいです!貢献ガイドラインをお読みください。
セキュリティの脆弱性を報告したい場合は、プライベートチャネルを使用してください。詳細については、セキュリティポリシーをご覧ください。