2017-01-27 11 views
11

私は、Android Studioが@Nullableがコード内で無視されていないことを確認しています:@ NullableアノテーションのAndroidのlintチェックを有効にするにはどうすればよいですか?

ex。

@Nullable MyObject getMyObject(); 
... 

MyObject o = getMyObject(); 
o.method(); 

^ Method invocation 'method' may produce 'java.lang.NullPointerException'

これはNullableProblems IntelliJの警告によって強制されます。

lintルールを使用してビルド時にgradleからこのルールを適用したいと思います。もし誰かがgradle経由でそれに似た何かを可能にすることができるかどうか知っていますか?

+0

つまり、このような警告がプロジェクトに存在する場合、gradleは建物を拒否しますか?または単にgradleにログ出力でこれを記録させたいのですか? – azizbekian

+0

最初のステップは、この状況をグラフトが認識することです。私のコマンドラインビルドはこれについて警告しません。しかし、はい、nullable値をチェックしないと、最終的にビルドを拒否したいと思います。 –

+0

lintエラーが発生した場合、コンパイルを中止したいのですか? – Dibzmania

答えて

7

問題の検査が糸くずであった場合、強制的にあなたのbuild.gradlelintOptionsを設定する方法があるだろうが、しかしthis question here

への回答のように失敗するビルドを、あなたが話している検査によって提供されAndroid StudioのIDE自体。現時点では、this canonical answer from a IntelliJ developerのように、これらの検査のビルドを停止する方法はありません。IntelliJが提供するこの静的コード分析の場合はlink to the documentationです。分析は、マニュアルに記載されている中で、特定の名前は「一定の条件&例外」である:

この検査は常にtrueまたはfalseです可能な条件、値が静的に証明された式をレポートする方法の制御とデータの流れを解析し、不変性の契約違反につながる可能性のある状況に対処する必要があります。@ Nullableまたは@NotNullとしてマークされた変数、メソッドパラメータ、および戻り値は、nullable(またはそれぞれnullではない)として扱われ、解析中にnull許容契約をチェックするために使用されます。可能なNullPointerExceptionエラーを報告します。

あなたができることは、その重大度を変更して警告として表示されるようにすることです(IDEには下線が引かれています)。 、このようにそれを行う環境設定/点検/考えられるバグに行くと「定数条件&例外」警告の重大​​度を変更します。

the probable bugs section of Inspections in Android Studio

警告を無視した場合にあなたのプロジェクトがまだビルドされますが、それは勝ちました「tは見栄え:

red underline on calling get on the result of a method that is @Nullable

あなたはあなたのチームを共有するように同じのAndroid Studioのコード検査の設定をそれを設定する必要があります。あなたはsettings repositoryでそれを行うことができます。

また、チームがコミットする前にコード分析を強制する[コミット変更/コード分析の実行]チェックボックスを有効にすることもできます。

code analysis dialog box in Android Studio

チームを強制的に検査を使用することに注意してください:あなたがコミット]をクリックし

commit changes dialog in Android Studio

は、それはあなたが話してきた警告を最初の解析を実行し、見つかりましたこのように、NPEがプロジェクトで問題になっている場合、最良の選択肢ではないかもしれません。その代わりに、 nullを返す問題を公然と議論するようなオプションを試すことができます。 Google Guava wikiの This excellent article on avoiding nullは素晴らしい出発点です。

+1

Android Studioの 'Analyze'オプションはlintとビルドされたIDEコード検査の両方を利用してコードエラーを検査すると思います。 – Dibzmania

0

ソースコードで特定のルールが壊れているときにlintがエラーをスローしたい場合は、ソースコンパイルが停止するようにプロジェクトを構成することができます。私は、全体のプロセスを記述することができますが、このリンクは、多かれ少なかれ、全部まとめて - https://developer.android.com/studio/write/lint.html

注 - http://www.kiodev.com/android-studio-lint-options/

はまた、Androidのリンクドキュメントを経る:アンドロイドStudioのメニューのAnalyzeオプションはほとんどリントと組み込みの両方を使用しますin Intellij Idea Code inspection

+0

ありがとう@Dibzmania。しかし、私はまだ、非リント検査のためにビルドを停止する方法はないと思っています。 –

+1

がある場合は教えてください。Intellij IDE検査を意味するのであれば、非リント検査であれば、検査エラーに失敗する方法はありません。参照のため、このSOのリンクを確認してください。--http://stackoverflow.com/questions/13291432/force-intellij-to-fail-the-compilation-on-nonnull-violations – Dibzmania

+0

ありがとうございました - 私はその質問へのリンクを自分の答えに追加しました。私はその問題を一度だけ解決すると思う –

関連する問題