web-dev-qa-db-ja.com

Android Studioをビルドごとにリントを実行するように構成するにはどうすればよいですか?

昔々、特にEclipseランドでは、Lintはすべてのビルドで実行されるため、Lintチェックに失敗した場合は、すぐに判明します。 Android Studio(1.3でテスト済み)の場合、Lintはビルドでデフォルトで実行されません。初心者はLintがチェックする間違いを犯す可能性がありますが、Lintは実際に実行されないため、それらについて知ることはできません。

(IOW、リントテストがフォレストで実行されなかった場合、実際にリントテストはありますか?)

このブログ投稿 へのコメントは、ビルドの一部としてLintを実行する方法を示しています:

  • プロジェクト構成を編集する
  • 設定の[全般]タブで、下にスクロールして[起動前]パネルを開きます
  • そのパネルで、モジュールのlintという名前の「Gradleタスクの実行」にステップを追加します

ただし、これによりコマンドラインLintが実行され、XMLおよびHTMLでハードドライブにレポートが作成されます。これは機能しますが、Android StudioでIDE内のLintチェックを実行すると、結果がIDEパネルに表示されます。

IDE内のリントチェックを実行するプロジェクトビルドを設定する方法はありますか?

onlyに設定できる場合のボーナスポイントは、Lintを実行します。Analyze> Inspect Codeによる完全な分析ではありません。完全な分析が役立つ場合もありますが、Lintは、Android Studio(例:スペルチェック))によって実行される疑わしい有用な分析は言うまでもなく、十分に遅いです。

これを設定することは、すべてのプロジェクトにとって素晴らしい計画ではありませんが(リントスキャンは遅い)、Androidを初めて使用する人にとっては、適切な動きかもしれません。

66
CommonsWare

Lintは、Android Studioで実行する必要があります。 build.gradleファイルのlintOptionsを使用してオフにします。

これは http://developer.Android.com/tools/debugging/improving-w-lint.html#studio にあるドキュメントからのものです

Android Studio、設定されたlintおよびIDEアプリをビルドするたびに検査が自動的に実行されます。IDE IntelliJコード検査を実行するリントチェックとともに、コードレビューを合理化します。

注:検査の重大度レベルを表示および変更するには、File> Settings> Project Settingsメニューをクリックして、サポートされている検査のリストを含む検査構成ページを開きます。

Android Studioでは、特定のビルドバリアント、またはbuild.gradleファイルのすべてのビルドバリアントに対してlint検査を実行できます。lintOptionsプロパティをAndroidビルドファイルの設定:Gradleビルドファイルのこのコードスニペットは、quietオプションをtrueに設定し、abortOnErrorオプションをfalseに設定する方法を示しています。

Android {
    lintOptions {
       // 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
       }
       ...
}

Android Studio、アプリケーションまたは右クリックメニューから検査を手動で実行するには、[分析]> [コードの検査]を選択します。検査範囲の指定ダイアログが表示され、目的の検査範囲とプロファイルを指定できます。

Gradle build.gradleファイルのlintOptionsブロックに追加できる他のlintオプションは次のとおりです。 http://tools.Android .com/tech-docs/new-build-system/user-guide#TOC-Lint-support

Android lint: http://developer.Android.com/tools/help/lint.html の詳細をご覧ください。

以前は、Android studio。

  • 画面の右側にある「Gradle」タブを開きます
  • タスクを選択してください

Android Studio Gradle Tab

  • タスクを右クリック
  • 実行アクションを選択してください

Android Studio Execution Action

これにより、実行がスケジュールされたときにタスクが実行されます。

15
Ray Hunter

Android Lintの検査プロファイルを作成

  1. [ファイル]-> [設定]-> [エディタ/検査]に移動します
  2. [管理]-> [コピー]を選択します
  3. 「Android Lint Profile」という名前を付けてEnterを押します
  4. マークしたままAndroidこのタブのリントルール

Android Lint Profile

これで、「Android Lint Profile」を選択して、Analyze-> Inspect Code ...を介してAndroid Lintルールでのみ検査を実行できます。

次のステップでは、次のステップでマクロを記録しましょう(編集->マクロ->マクロ記録の開始)。

  1. 分析->コードの検査...
  2. 「Android Lint Profile」を選択します
  3. Enterキーを押します(マクロレコーダーはこのウィンドウでのマウスクリックをキャッチしないため、キーボードを使用するにはimportantです)
  4. [選択した構成を実行]をクリックします(緑色の再生ボタン)。

マクロの記録を停止し、「Lint and Run」という名前を付けます。

最後にすべきことは、「Shift + F10」をマクロにマッピングすることです。 [ファイル]-> [設定...]-> [キーマップ]に移動します。マクロを見つけてショートカットを変更します。

macro keymapping

これで、各ビルドの前にlintが実行されますShift + F10を押すと、結果がAndroid Studioパネルに表示されます。

しかし、このソリューションには、bigの欠点が1つあります。 [実行]ボタンをクリックしてビルドを実行すると、リント分析は実行されません。

この情報が役立ち、誰かがそれを使ってより良い解決策を提供するかもしれません。

6
Ilya Tretyakov

これは、プッシュ時にlintを自動的に実行し、Lintエラーが見つかった場合にプッシュに失敗する、事前プッシュgitフックを追加することでこれを達成しました。プッシュ前のフックスクリプトはAndroidプロジェクトリポジトリに保存され、gradleを介してユーザーのローカルマシンに自動的にインストールされました。

install-git-hooks.gradle

def hookDest = new File("${rootProject.rootDir}/.git/hooks/pre-Push")
def prePushHook = new File("${rootProject.rootDir}/pre-Push")

task installGitHooksTask(type: Copy) {
    hookDest.delete()
    hookDest << prePushHook.text
}

task gitExecutableHooks() {
    Runtime.getRuntime().exec("chmod -R +x ${hookDest}");
    println "gitExecutableHooks"
}

gitExecutableHooks.dependsOn installGitHooksTask

アプリのbuild.gradleより

apply from: rootProject.file('gradle/install-git-hooks.gradle')

事前プッシュ

#!/bin/sh
#
# This hook is for Android project git repos.
#
# You can use git config variables to customize this hook.
# -----------------------------------------------------------
# Change hooks.lintTargetDirectory to point at a non . directory
# Change hooks.lintArgs to add any custom lint arguments you prefer

# Get custom info
dirToLint=$(git config hooks.lintTargetDirectory)
lintArgs=$(git config hooks.lintArgs)
projectDir=$(git rev-parse --show-toplevel)
lintReportPath="/app/lint-report.html"

# If user has not defined a preferred directory to lint against, make it .
if [ -z "$dirToLint"]
  then
  dirToLint="."
fi

# Perform lint check
echo "Performing pre-commit lint check of ""$dirToLint"
./gradlew lint
lintStatus=$?

if [ $lintStatus -ne 0 ]
then
  echo "Lint failure, git Push aborted."
  echo "Open ${projectDir}${lintReportPath} in a browser to see Lint Report"
  exit 1
fi

exit $lintStatus
5
Lawrence Martin

1つの可能な(ただし実装が難しい)ソリューションは、これを行うためにIDEAプラグインを書くことです。以下のプラグインをリポジトリからダウンロードするか、githubからコードをダウンロードすることでこれを回避できます。 'compile'および 'inspect code'アクションを順番に実行します。

public class BuildAndLint extends AnAction {
    public void actionPerformed(AnActionEvent e) {
        String[] actions = {"CompileProject", "InspectCode"};
        for(String action: actions) {
            AnAction anAction = ActionManager.getInstance().getAction(action);

            DataContext context = e.getDataContext(); 
            AnActionEvent anActionEvent = new AnActionEvent(null, context, "", anAction.getTemplatePresentation(), ActionManager.getInstance(), 0);

            anAction.actionPerformed(anActionEvent);
        }
    }
}

コードはテスト済みで、Android Studio 1.3。すべてを実行するのではなく、検査対象を選択するウィンドウを開きます。

リンク

githubのソースコード

ビルトアンドリントジャー

1
Roy Falk