Android
糸くずの警告
サーチ…
備考
Lintツールは、正確性、セキュリティ、パフォーマンス、ユーザビリティ、アクセシビリティ、および国際化のための潜在的なバグや最適化の改善について、Androidプロジェクトのソースファイルをチェックします。 Lintは、コマンドラインやAndroid Studioから実行できます。
公式文書:
ツールを使う:xmlファイルを無視する
属性tools:ignore
は、lintの警告を消すためにxmlファイルで使用できます。
しかし、このテクニックで糸くずの警告を却下することは、ほとんどの場合、間違った方法で進むことです。
糸くずの警告は理解され、修正されなければなりません...あなたがそれを完全に理解していて、それを無視する強力な理由がある場合に限り、無視することができます。
ここでは、リント警告を無視する正当なユースケースです:
- あなたはシステム・アプリを開発しています(デバイス製造者の鍵で署名されています)
- あなたのアプリは、デバイスの日付(またはその他の保護されたアクション)を変更する必要があります
次に、あなたのマニフェストでこれを行うことができます:(つまり、保護されたアクセス権を要求し、あなたの場合に許可が与えられることを知っているので、
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
...>
<uses-permission android:name="android.permission.SET_TIME"
tools:ignore="ProtectedPermissions"/>
「推奨されない」エラーのないリソースのインポート
Android API 23以降を使用すると、非常に頻繁にそのような状況が見えます:
このような状況は、Android APIのリソースの取得に関する構造的な変更によって発生します。今の関数:
public int getColor(@ColorRes int id, @Nullable Theme theme) throws NotFoundException
使用すべきです。しかし、android.support.v4ライブラリには別の解決策があります。
build.gradleファイルに次の依存関係を追加します。
com.android.support:support-v4:24.0.0
サポートライブラリのすべてのメソッドが利用可能です:
ContextCompat.getColor(context, R.color.colorPrimaryDark);
ContextCompat.getDrawable(context, R.drawable.btn_check);
ContextCompat.getColorStateList(context, R.color.colorPrimary);
DrawableCompat.setTint(drawable);
ContextCompat.getColor(context,R.color.colorPrimaryDark));
さらにサポートライブラリからのより多くのメソッドを使用することができます:
ViewCompat.setElevation(textView, 1F);
ViewCompat.animate(textView);
TextViewCompat.setTextAppearance(textView, R.style.AppThemeTextStyle);
...
graditeでLintOptionsを設定する
lintを設定するには、 lintOptions
セクションをbuild.gradle
ファイルに追加します。
android {
//.....
lintOptions {
// turn off checking the given issue id's
disable 'TypographyFractions','TypographyQuotes'
// turn on the given issue id's
enable 'RtlHardcoded','RtlCompat', 'RtlEnabled'
// check *only* the given issue id's
check 'NewApi', 'InlinedApi'
// set to true to turn off analysis progress reporting by lint
quiet true
// if true, stop the gradle build if errors are found
abortOnError false
// if true, only report errors
ignoreWarnings true
}
}
lintを特定のバリアント(以下を参照)、たとえば./gradlew lintRelease
、またはすべてのバリアント( ./gradlew lint
)に対して実行することができます。この場合、特定の問題がどの特定のバリアントに適用されるかを示すレポートが生成されます。
使用可能なすべてのオプションについては、 DSLリファレンスを参照してください。
lint.xmlファイルを構成する方法
lint.xml
ファイルでLintの検査の設定を指定することができます。このファイルを手動で作成する場合は、Androidプロジェクトのルートディレクトリに配置します。 Android StudioでLint環境設定を構成する場合、lint.xmlファイルが自動的に作成され、Androidプロジェクトに自動的に追加されます。
例:
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- list of issues to configure -->
</lint>
タグ内の重大度属性値を設定することにより、問題のLintチェックを無効にしたり、問題の重大度を変更することができます。
次の例は、 lint.xml
ファイルの内容を示しています。
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- Disable the given check in this project -->
<issue id="IconMissingDensityFolder" severity="ignore" />
<!-- Ignore the ObsoleteLayoutParam issue in the specified files -->
<issue id="ObsoleteLayoutParam">
<ignore path="res/layout/activation.xml" />
<ignore path="res/layout-xlarge/activation.xml" />
</issue>
<!-- Ignore the UselessLeaf issue in the specified file -->
<issue id="UselessLeaf">
<ignore path="res/layout/main.xml" />
</issue>
<!-- Change the severity of hardcoded strings to "error" -->
<issue id="HardcodedText" severity="error" />
</lint>
JavaおよびXMLソースファイルのlintチェックの設定
JavaおよびXMLソースファイルからLintチェックを無効にすることができます。
Javaでのリントチェックの設定
AndroidプロジェクトのJavaクラスまたはメソッドのLintチェックを無効にするには、そのJavaコードに@SuppressLint
アノテーションを追加します。
例:
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
すべてのLint問題のチェックを無効にするには:
@SuppressLint("all")
XMLでのlintのチェックの設定
tools:ignore
属性を使用すると、 XMLファイルの特定のセクションについてLintチェックを無効にtools:ignore
ことができます 。
例えば:
tools:ignore="NewApi,StringFormatInvalid"
XML要素内のすべてのLintの問題のチェックを抑制するには、次のようにします。
tools:ignore="all"
警告を抑止する
コード内にいくつかの警告をマークするのがよい方法です。たとえば、いくつかの推奨されなくなったメソッドは、テストや旧バージョンのサポートが必要です。しかし、リントチェックは、そのコードを警告でマークします。この問題を回避するには、アノテーション@SuppressWarningsを使用する必要があります。
たとえば、廃止予定のメソッドに警告を無視することを追加します。アノテーションに警告の説明を入れる必要もあります:
@SuppressWarnings("deprecated");
public void setAnotherColor (int newColor) {
getApplicationContext().getResources().getColor(newColor)
}
この注釈を使用すると、Lint、Androidなどのすべての警告を無視できます。 Suppress Warningsを使用すると、コードを正しく理解するのに役立ちます!