program tip

모든 빌드에서 Lint를 실행하도록 Android Studio를 어떻게 구성합니까?

radiobox 2020. 11. 9. 07:59
반응형

모든 빌드에서 Lint를 실행하도록 Android Studio를 어떻게 구성합니까?


옛날 옛적, 특히 Eclipse-land에서 Lint는 모든 빌드에서 실행되므로 Lint 검사에 실패하면 즉시 알아낼 수 있습니다. Android Studio (1.3에서 테스트 됨)를 사용하면 Lint가 기본적으로 빌드에서 실행되지 않습니다. 새로 온 사람들은 Lint가 확인하는 실수를 할 수 있지만 Lint가 실제로 실행되지 않기 때문에 새로 온 사람들은 실수를 알지 못합니다.

(IOW, Lint 테스트가 포리스트에서 실행되지 않은 경우 실제로 Lint 테스트가 있습니까?)

이 블로그 게시물대한 의견 은 Lint를 빌드의 일부로 실행하는 방법을 보여줍니다.

  • 프로젝트 구성 편집
  • 구성의 일반 탭에서 아래로 스크롤하여 "시작 전"패널을 엽니 다.
  • 해당 패널에서 lint모듈에 이름이 지정된 "Run Gradle Task"단계를 추가 합니다.

그러나 이것은 명령 줄 Lint를 실행하므로 보고서가 XML 및 HTML로 하드 드라이브에 기록됩니다. 작동하지만 Android Studio에서 IDE 내 Lint 검사를 실행하는 것이 더 깨끗하므로 결과가 IDE 패널에 표시됩니다.

IDE 내 Lint 검사를 수행하기 위해 프로젝트 빌드를 설정하는 방법이 있습니까?

분석> 코드 검사에서 수행 한 전체 분석이 아니라 Lint 실행 하도록 설정할 수있는 경우 보너스 포인트가 제공됩니다 . 전체 분석이 때때로 유용하지만 Lint는 Android Studio에서 수행하는 의심스럽고 유용한 다른 분석 (예 : 맞춤법 검사)은 말할 것도없고 충분히 느립니다.

이 설정은 모든 프로젝트에 대해 좋은 계획은 아니지만 (Lint 스캔 속도가 느림) Android를 처음 접하는 사용자에게는 적절한 조치 일 수 있습니다.


Lintbuild.gradle 파일 lintOptions통해 해제되도록 구성하지 않은 경우 Android 스튜디오 에서 실행되어야 합니다.

다음은 http://developer.android.com/tools/debugging/improving-w-lint.html#studio에 있는 문서에서 가져온 것입니다.

Android 스튜디오에서 구성된 Lint 및 IDE 검사는 앱을 빌드 할 때마다 자동으로 실행됩니다. IDE 검사는 Lint 검사와 함께 구성되어 IntelliJ 코드 검사를 실행하여 코드 검토를 간소화합니다.

참고 : 검사 심각도 수준을보고 수정하려면 파일> 설정> 프로젝트 설정 메뉴를 사용하여 지원되는 검사 목록이있는 검사 구성 페이지를 엽니 다.

Android 스튜디오를 사용하면 특정 빌드 변형 또는 build.gradle 파일의 모든 빌드 변형에 대해 Lint 검사를 실행할 수도 있습니다. 빌드 파일의 Android 설정에 lintOptions 속성을 추가합니다. 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 스튜디오에서 수동으로 검사를 실행하려면 애플리케이션 또는 마우스 오른쪽 버튼 클릭 메뉴에서 Analyze> Inspect Code를 선택합니다 . 원하는 검사 범위와 프로필을 지정할 수 있도록 검사 범위 지정 대화 상자가 나타납니다.

다음은 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 스튜디오에서 특정 작업 후에 gradle 작업을 추가 할 수 있습니다.

  • 화면 오른쪽에있는 Gradle 탭을 엽니 다.
  • 작업 선택

Android Studio Gradle 탭

  • 작업을 마우스 오른쪽 버튼으로 클릭하십시오.
  • 실행 작업 선택

Android Studio 실행 작업

실행이 예약되었을 때 작업을 실행해야합니다.


Android Lint 용 검사 프로필 만들기

  1. 파일-> 설정-> 편집기 / 검사로 이동합니다.
  2. 관리-> 복사를 선택하십시오.
  3. 이름을 "Android Lint Profile"로 지정하고 Enter 키를 누릅니다.
  4. 이 탭에 표시된 Android Lint 규칙 만 남겨 둡니다.

Android Lint 프로필

이제 "Android Lint 프로필"을 선택하여 Analyze-> Inspect Code ...를 통해 Android Lint 규칙으로 만 검사를 실행할 수 있습니다.

다음 단계에서는 다음 단계로 매크로를 기록해 보겠습니다 (편집-> 매크로-> 매크로 기록 시작).

  1. 분석-> 코드 검사 ...
  2. "Android Lint 프로필"을 선택합니다.
  3. Enter 키를 누릅니다 ( 매크로 레코더가이 창에서 마우스 클릭을 감지하지 못하므로 키보드를 사용 하는 것이 중요 합니다)
  4. "선택한 구성 실행"을 클릭합니다 (녹색 재생 버튼).

매크로 기록을 중지하고 "Lint and Run"이라는 이름을 지정합니다.

마지막으로해야 할 일은 "Shift + F10"을 매크로에 매핑하는 것입니다. 파일-> 설정 ...-> 키맵으로 이동합니다. 매크로를 찾아 바로 가기를 변경하십시오.

매크로 키매핑

이제 Shift + F10을 누르면 각 빌드 전에 Lint가 실행 되고 결과는 Android Studio 패널에 표시됩니다.

But this solution have one big drawback. If you run your build by clicking on the Run button lint analysis will not be executed.

May be this info will be helpful and someone will provide better solution using it.


I accomplished this previously by adding a pre-push git hook that would run lint automatically on push, and fail to push if Lint errors were found. The pre-push hook script was stored in the Android project repo and was installed to a user's local machine automatically via 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

Than in your app build.gradle

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

pre-push

#!/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

한 가지 가능한 (하지만 구현하기 어려운) 해결책은이를 위해 IDEA 플러그인을 작성하는 것입니다. 저장소에서 아래 플러그인을 다운로드하거나 github에서 코드를 다운로드하여이를 방지 할 수 있습니다. 다음 코드 조각은 '컴파일'및 '코드 검사'작업을 순차적으로 실행합니다.

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의 소스 코드

빌드 및 보풀 항아리

참고 URL : https://stackoverflow.com/questions/32631131/how-do-we-configure-android-studio-to-run-its-lint-on-every-build

반응형