린트 검사로 코드 개선

앱이 기능적 요구사항을 충족하는지 확인하기 위해 테스트를 빌드하는 것 외에도 린트 도구를 통해 코드를 실행하여 코드에 구조적 문제가 없는지 확인하는 것도 중요합니다. 린트 도구를 사용하면 구조적 문제로 인해 Android 앱의 안정성과 효율성에 영향을 미치거나 코드 관리에 지장을 줄 가능성이 있는 코드를 찾을 수 있습니다. 앱을 게시하기 전에 린트가 탐지한 오류를 수정하는 것이 좋습니다.

예를 들어 XML 리소스 파일에 사용되지 않는 네임스페이스가 있다면 공간을 차지하고 불필요한 처리가 발생합니다. 지원 중단된 요소 또는 타겟 API 버전에서 지원하지 않는 API 호출의 사용과 같은 다른 구조적 문제가 발생하는 경우 코드가 올바르게 실행되지 않을 수 있습니다. 린트를 사용하면 이런 문제를 해결할 수 있습니다.

린트 성능을 개선하려면 코드에 주석을 추가할 수도 있습니다.

개요

Android 스튜디오에서 제공하는 린트라는 코드 스캔 도구를 사용하면 앱을 실행하거나 테스트 사례를 작성할 필요 없이 코드의 구조적 품질 문제를 식별하고 수정할 수 있습니다. 도구에서 감지된 각 문제는 설명 메시지 및 심각도 수준과 함께 보고되므로 개선이 시급한 순서대로 신속히 우선순위를 정할 수 있습니다. 문제의 심각도 수준을 낮춰서 프로젝트와 관련이 없는 문제를 무시하거나 심각도 수준을 높여서 특정 문제를 강조표시할 수도 있습니다.

린트 도구는 Android 프로젝트 소스 파일을 검사하여 잠재적 버그를 찾아내고 정확성, 보안, 성능, 사용성, 접근성, 국제화 등을 최적화합니다. Android 스튜디오를 사용하면 앱을 빌드할 때 구성된 린트 및 IDE 검사가 실행됩니다. 그러나 이 페이지에 설명된 대로 수동으로 검사를 실행하거나 명령줄에서 린트를 실행할 수도 있습니다.

Android 스튜디오를 사용하는 동안 내장된 린트 도구가 코드를 검사합니다. 경고와 오류를 확인할 수 있는 2가지 방법이 있습니다.

  • 편집기 창에서 팝업 텍스트로 확인합니다. 린트가 문제를 발견하면 문제가 있는 코드는 노란색으로 강조표시됩니다. 더욱 심각한 문제는 코드를 빨간색 밑줄로 표시합니다.
  • Code > Inspect Code를 클릭한 후 린트 Inspection Results 창에서 확인합니다.

참고: Android 스튜디오에서 코드를 컴파일할 때는 추가 IntelliJ 코드 검사가 실행되어 코드 검토가 간소화됩니다. 최신 린트 규칙과 검사를 사용할 수 있도록 Android 스튜디오를 최대한 최신 상태로 유지합니다.

그림 1은 린트 도구가 앱 소스 파일을 처리하는 모습을 보여줍니다.

린트 도구를 사용한 코드 스캔 워크플로
그림 1. 린트 도구를 사용한 코드 스캔 워크플로
앱 소스 파일
소스 파일은 Kotlin, Java, XML 파일, 아이콘, ProGuard 구성 파일을 포함하여 Android 프로젝트를 구성하는 파일로 이루어집니다.
lint.xml 파일
제외하려는 린트 검사를 지정하고 문제 심각도 수준을 맞춤설정하는 데 사용할 수 있는 구성 파일입니다.
린트 도구
명령줄 또는 Android 스튜디오를 사용하여 Android 프로젝트에서 실행할 수 있는 정적 코드 스캔 도구입니다. 린트 도구는 Android 앱의 품질과 성능에 영향을 미칠 수 있는 구조적 코드 문제를 검사합니다.
린트 검사 결과
콘솔이나 Android 스튜디오의 Inspection Results 창에서 린트의 결과를 확인할 수 있습니다. 명령줄에서 lint를 실행하면 결과가 build/ 폴더에 쓰여집니다. 자세한 내용은 수동으로 검사 실행 섹션을 참고하세요.

명령줄에서 린트 실행

Android 스튜디오 또는 Gradle을 사용한다면 프로젝트의 루트 디렉터리에서 다음 명령어 중 하나를 입력하여 프로젝트의 lint 작업을 호출하는 Gradle 래퍼를 사용할 수 있습니다.

참고: 최신 린트 규칙을 사용하려면 Android Gradle 플러그인을 최대한 최신 상태로 유지하세요.

  • Windows:
    gradlew lint
    
  • Linux 또는 macOS:
    ./gradlew lint
    

다음과 비슷한 출력이 표시됩니다.

> Task :app:lintDebug
Wrote HTML report to file:<path-to-project>/app/build/reports/lint-results-debug.html

린트 도구에서 검사가 완료되면 XML 버전 및 HTML 버전의 린트 보고서 경로가 제공됩니다. 그러면 HTML 보고서로 이동하여 브라우저에서 보고서를 열 수 있습니다(그림 2 참조).

HTML 린트 보고서 샘플
그림 2. HTML 린트 보고서 샘플

프로젝트에 빌드 변형이 포함되어 있는 경우 린트는 기본 변형만 검사합니다. 다른 변형에서 린트를 실행하려면 변형 이름을 대문자로 쓰고 lint를 접두사로 붙여야 합니다.

./gradlew lintRelease

참고: 린트는 빌드의 일부로 자동 실행되지 않습니다. 기존 소스 코드를 빌드할 때 최신 린트 검사가 표시되도록 지속적 통합 빌드의 일부로 린트를 명시적으로 실행하는 것이 좋습니다.

명령줄에서 Gradle 작업을 실행하는 방법에 관한 자세한 내용은 명령줄에서 앱 빌드를 참고하세요.

독립형 도구를 사용하여 린트 실행

Android 스튜디오나 Gradle을 사용하지 않는 경우 Android SDK 명령줄 도구를 설치하여 독립형 린트 도구를 사용합니다. android_sdk/cmdline-tools/version/bin/lint에서 린트 도구를 찾습니다.

참고: Gradle 프로젝트에서 독립형 도구를 실행하려고 하면 오류가 발생합니다. 항상 gradle lint (Windows의 경우) 또는 ./gradlew lint (macOS 또는 Linux의 경우)를 사용하여 Gradle 프로젝트에서 린트를 실행해야 합니다.

프로젝트 디렉터리에서 파일 목록에 린트를 실행하려면 다음 명령어를 사용합니다.

lint [flags] <project directory>

예를 들어 다음 명령어를 실행하여 myproject 디렉터리 및 그 하위 디렉터리에 있는 파일을 스캔할 수 있습니다. 문제 ID MissingPrefix는 Android 네임스페이스 접두사가 없는 XML 속성만 스캔하도록 린트에 지시합니다.

lint --check MissingPrefix myproject 

도구에서 지원하는 플래그 및 명령줄 인수의 전체 목록을 보려면 다음 명령어를 사용하세요.

lint --help

다음 예는 Earthquake라는 프로젝트에 린트 명령어가 실행될 때의 콘솔 출력을 보여줍니다.

$ lint Earthquake

Scanning Earthquake: ...............................................................................................................................
Scanning Earthquake (Phase 2): .......
AndroidManifest.xml:23: Warning: <uses-sdk> tag appears after <application> tag [ManifestOrder]
  <uses-sdk android:minSdkVersion="7" />
  ^
AndroidManifest.xml:23: Warning: <uses-sdk> tag should specify a target API level (the highest verified version; when running on later versions, compatibility behaviors may be enabled) with android:targetSdkVersion="?" [UsesMinSdkAttributes]
  <uses-sdk android:minSdkVersion="7" />
  ^
res/layout/preferences.xml: Warning: The resource R.layout.preferences appears to be unused [UnusedResources]
res: Warning: Missing density variation folders in res: drawable-xhdpi [IconMissingDensityFolder]
0 errors, 4 warnings

출력 예시에는 경고 4개가 표시되고 오류는 없습니다.

프로젝트의 AndroidManifest.xml 파일과 관련된 두 가지 경고가 있습니다.

  • ManifestOrder
  • UsesMinSdkAttributes
Preferences.xml 레이아웃 파일(UnusedResources)과 관련된 경고가 하나 있습니다.

res 디렉터리와 관련된 경고는 IconMissingDensityFolder 하나입니다.

경고를 표시하지 않도록 린트 구성

기본적으로 린트 스캔을 실행하면 도구는 린트에서 지원하는 모든 문제를 검사합니다. 린트가 검사할 문제를 제한하고 문제에 심각도 수준을 할당할 수도 있습니다. 예를 들어 프로젝트와 관련이 없는 특정 문제는 린트에서 검사가 이루어지지 않도록 구성하거나 중요하지 않은 문제를 낮은 심각도 수준으로 보고하도록 린트를 구성할 수도 있습니다.

심각도 수준은 다음과 같습니다.

  • enable
  • disable 또는 ignore
  • informational
  • warning
  • error
  • fatal

다양한 수준으로 Lint 검사를 구성할 수 있습니다.

  • 전역(전체 프로젝트)
  • 프로젝트 모듈
  • 프로덕션 모듈
  • 테스트 모듈
  • 열린 파일
  • 클래스 계층 구조
  • 버전 제어 시스템(VCS) 범위

린트 파일 구성

lint.xml 파일에서 린트 검사 환경설정을 지정할 수 있습니다. 이 파일을 수동으로 만드는 경우 Android 프로젝트의 루트 디렉터리에 파일을 넣습니다.

lint.xml 파일은 하위 <issue> 요소가 하나 이상 포함된 인클로징 <lint> 상위 태그로 구성됩니다. 린트는 각 <issue>에 고유한 id 속성 값을 정의합니다.

<?xml version="1.0" encoding="UTF-8"?>
<lint>
    <!-- list of issues to configure -->
</lint>

문제의 심각도 수준을 변경하거나 문제의 린트 검사를 사용 중지하려면 <issue> 태그에서 심각도 속성을 설정하세요.

도움말: 린트에서 지원하는 문제 및 상응하는 문제 ID의 전체 목록을 확인하려면 lint --list 명령어를 실행하세요.

lint.xml 파일 샘플

다음 예는 lint.xml 파일의 콘텐츠를 보여줍니다.

<?xml version="1.0" encoding="UTF-8"?>
<lint>
    <!-- Disable the IconMissingDensityFolder 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>

이 예에서는 다양한 문제 유형이 보고되는 방식을 보여줍니다. IconMissingDensityFolder 검사는 완전히 사용 중지되고 ObsoleteLayoutParam 검사는 폐쇄된 <ignore ... /> 선언에 지정된 파일에서만 사용 중지됩니다.

Kotlin, Java, XML 소스 파일의 린트 검사 구성

Preferences 대화상자에서 Kotlin, Java, XML 소스 파일의 린트 검사를 사용 중지할 수 있습니다.

  1. File > Settings (Windows) 또는 Android 스튜디오 > Preferences(macOS 또는 Linux)를 선택합니다.
  2. 편집기 > 검사를 선택합니다.
  3. 사용 중지하려면 적절한 소스 파일을 선택 해제합니다.

적절한 프로필을 선택하여 IDE 또는 개별 프로젝트에 이를 설정할 수 있습니다.

Java 또는 Kotlin에서 린트 검사 구성

Android 프로젝트에서 특정 클래스 또는 메서드의 린트 검사를 사용 중지하려면 코드에 @SuppressLint 주석을 추가합니다.

다음 예는 onCreate 메서드에서 NewApi 문제의 린트 검사를 사용 중지할 수 있는 방법을 보여줍니다. 린트 도구는 이 클래스의 다른 메서드에서 NewApi 문제를 계속 검사합니다.

Kotlin

@SuppressLint("NewApi")
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main)

자바

@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

다른 컴포저블에서도 동일한 작업을 실행할 수 있습니다. 다음 코드 스니펫은 컴포저블에서 NewApi 검사를 사용 중지하는 방법을 보여줍니다.

Kotlin

  @SuppressLint("NewApi")
  @Composable
  fun MyComposable{
    ...
  }
  

다음 예는 FeedProvider 클래스에서 ParserError 문제의 린트 검사를 사용 중지하는 방법을 보여줍니다.

Kotlin

@SuppressLint("ParserError")
class FeedProvider : ContentProvider() {

자바

@SuppressLint("ParserError")
public class FeedProvider extends ContentProvider {

파일에서 모든 린트 문제 검사를 금지하려면 all 키워드를 사용하세요.

Kotlin

@SuppressLint("all")

자바

@SuppressLint("all")

동일한 주석을 사용하여 구성 가능한 함수에서 린트 검사를 억제할 수 있습니다.

XML에서 린트 검사 구성

tools:ignore 속성을 사용하여 XML 파일의 특정 섹션에 린트 검사를 사용 중지합니다. 다음 네임스페이스 값을 lint.xml 파일에 입력하여 린트 도구에서 속성을 인식하도록 합니다.

namespace xmlns:tools="http://schemas.android.com/tools"

다음 예에서는 XML 레이아웃 파일의 <LinearLayout> 요소에서 UnusedResources 문제의 린트 검사를 사용 중지하는 방법을 보여줍니다. ignore 속성은 속성이 선언된 상위 요소의 하위 요소에서 상속됩니다. 이 예에서 린트 검사는 하위 <TextView> 요소에도 사용 중지됩니다.

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:ignore="UnusedResources" >

    <TextView
        android:text="@string/auto_update_prompt" />
</LinearLayout>

두 개 이상의 문제를 사용 중지하려면 쉼표로 구분된 문자열로 사용 중지할 문제를 나열합니다. 예를 들면 다음과 같습니다.

tools:ignore="NewApi,StringFormatInvalid"

XML 요소에서 모든 린트 문제의 검사를 금지하려면 all 키워드를 사용하세요.

tools:ignore="all"

Gradle에서 린트 옵션 구성

Android Gradle 플러그인을 사용하면 모듈 수준의 build.gradle 파일에서 lint{} 블록을 사용하여 실행 또는 무시할 검사 등 특정 린트 옵션을 구성할 수 있습니다.

다음 코드 스니펫은 구성할 수 있는 속성 몇 가지를 보여줍니다.

Kotlin

android {
    ...
    lint {
        // Turns off checks for the issue IDs you specify.
        disable += "TypographyFractions" + "TypographyQuotes"
        // Turns on checks for the issue IDs you specify. These checks are in
        // addition to the default lint checks.
        enable += "RtlHardcoded" + "RtlCompat" + "RtlEnabled"
        // To enable checks for only a subset of issue IDs and ignore all others,
        // list the issue IDs with the 'check' property instead. This property overrides
        // any issue IDs you enable or disable using the properties above.
        checkOnly += "NewApi" + "InlinedApi"
        // If set to true, turns off analysis progress reporting by lint.
        quiet = true
        // If set to true (default), stops the build if errors are found.
        abortOnError = false
        // If set to true, lint only reports errors.
        ignoreWarnings = true
        // If set to true, lint also checks all dependencies as part of its analysis.
        // Recommended for projects consisting of an app with library dependencies.
        checkDependencies = true
    }
}
...

Groovy

android {
    ...
    lint {
        // Turns off checks for the issue IDs you specify.
        disable 'TypographyFractions','TypographyQuotes'
        // Turns on checks for the issue IDs you specify. These checks are in
        // addition to the default lint checks.
        enable 'RtlHardcoded','RtlCompat', 'RtlEnabled'
        // To enable checks for only a subset of issue IDs and ignore all others,
        // list the issue IDs with the 'check' property instead. This property overrides
        // any issue IDs you enable or disable using the properties above.
        checkOnly 'NewApi', 'InlinedApi'
        // If set to true, turns off analysis progress reporting by lint.
        quiet true
        // If set to true (default), stops the build if errors are found.
        abortOnError false
        // If set to true, lint only reports errors.
        ignoreWarnings true
        // If set to true, lint also checks all dependencies as part of its analysis.
        // Recommended for projects consisting of an app with library dependencies.
        checkDependencies true
    }
}
...

문제의 주어진 심각도 수준을 재정의하는 모든 린트 메서드는 구성 순서를 따릅니다. 예를 들어 finalizeDsl()에서 문제를 심각한 것으로 설정하면 기본 DSL에서 사용 중지되었던 것이 재정의됩니다.

경고 기준 만들기

프로젝트의 현재 경고 세트의 스냅샷을 만든 후 이 스냅샷을 이후 검사 실행의 기준으로 사용하여 새로운 문제만 보고되도록 만들 수 있습니다. 기준 스냅샷을 사용하면 먼저 모든 기존 문제로 돌아가 문제를 해결하지 않고도 린트를 사용해 빌드를 통과시키지 않게 만들 수 있습니다.

기준 스냅샷을 만들려면 다음과 같이 프로젝트의 build.gradle 파일을 수정합니다.

Kotlin

android {
    lint {
        baseline = file("lint-baseline.xml")
    }
}

Groovy

android {
    lintOptions {
        baseline file("lint-baseline.xml")
    }
}

이 줄을 처음 추가하면 기준을 설정하는 lint-baseline.xml 파일이 만들어집니다. 그런 다음에는 도구가 파일만 읽어 기준을 확인합니다. 새 기준을 만들려면 수동으로 파일을 삭제한 후 린트를 다시 실행하여 파일을 다시 만듭니다.

그런 다음 다음과 같이 IDE에서 Code > Inspect Code를 선택하거나 명령줄에서 린트를 실행합니다. 출력에는 lint-baseline.xml 파일 위치가 표시됩니다. 실제로 설정할 때 파일 위치는 여기에 나온 것과 다를 수 있습니다.

$ ./gradlew lintDebug -Dlint.baselines.continue=true
...
Wrote XML report to file:///app/lint-baseline.xml
Created baseline file /app/lint-baseline.xml

lint를 실행하면 lint-baseline.xml 파일의 현재 문제가 모두 기록됩니다. 이러한 현재 문제 세트를 기준이라고 합니다. lint-baseline.xml 파일을 다른 사람과 공유하려면 파일을 버전 제어로 확인할 수 있습니다.

기준 맞춤설정

기준에 특정 문제 유형만 추가하려면 다음과 같이 프로젝트의 build.gradle 파일을 수정하여 추가할 문제를 지정합니다.

Kotlin

android {
    lint {
        checkOnly += "NewApi" + "HandlerLeak"
        baseline = file("lint-baseline.xml")
    }
}

Groovy

android {
    lintOptions {
        checkOnly 'NewApi', 'HandlerLeak'
        baseline file("lint-baseline.xml")
    }
}

기준을 만든 후에 새로운 경고를 코드베이스에 추가하면 새로 발생한 버그만 린트에 나열됩니다.

기준 경고

기준이 적용되면 하나 이상의 문제가 기준에 나열되어 있어 필터링되었음을 알리는 정보성 경고를 받게 됩니다. 이 경고는 기준을 구성했음을 기억하고 특정 시점에 모든 문제를 해결해야 함을 알려줍니다.

또한 이 정보성 경고는 더 이상 보고되지 않는 문제도 추적합니다. 이 정보를 통해 실제로 문제를 해결했는지 여부를 알 수 있어 선택적으로 같은 오류가 탐지되지 않으면서 재발하는 것을 방지하기 위해 기준을 다시 만들 수도 있습니다.

참고: 기준은 IDE에서 일괄 모드로 검사를 실행하면 사용 설정되지만 파일을 수정할 때 백그라운드에서 실행되는 편집기 내 검사에서는 무시됩니다. 이는 기준이 코드베이스에 기존 경고가 많은 경우를 위한 것이지만 개발자가 코드 작업을 하는 동안에는 로컬에서 문제를 해결하기 위한 것이기 때문입니다.

수동으로 검사 실행

구성된 린트 검사 및 기타 IDE 검사를 수동으로 실행하려면 Code > Inspect Code를 선택합니다. 검사 결과는 Inspection Results 창에 표시됩니다.

검사 범위 및 프로필 설정

분석할 파일 (검사 범위)과 실행할 검사 (검사 프로필)를 다음과 같이 선택합니다.

  1. Android 뷰에서 프로젝트를 열고 분석할 프로젝트, 폴더 또는 파일을 선택합니다.
  2. 메뉴 바에서 Code > Inspect Code를 선택합니다.
  3. Specify Inspection Scope 대화상자에서 설정을 검토합니다.

    검사 범위 설정 검토
    그림 3. 검사 범위 설정을 검토합니다.

    Specify Inspection Scope 대화상자에 표시되는 옵션은 프로젝트, 폴더 또는 파일을 선택했는지에 따라 다릅니다.

    • 프로젝트, 파일, 디렉터리를 하나 선택하면 Specify Inspection Scope 대화상자에 선택한 프로젝트, 파일, 디렉터리의 경로가 표시됩니다.
    • 프로젝트, 파일, 디렉터리를 2개 이상 선택하면 Specify Inspection Scope 대화상자에 선택한 파일의 선택된 라디오 버튼이 표시됩니다.

    검사 대상을 변경하려면 다른 라디오 버튼 중 하나를 선택합니다. Specify Inspection Scope 대화상자의 모든 가능한 필드에 대한 설명은 Specify Inspection Scope 대화상자를 참고하세요.

  4. Inspection profile(검사 프로필)에서 사용할 프로필을 선택합니다.
  5. OK를 클릭하여 검사를 실행합니다.

    그림 4는 Inspect Code 실행 시의 린트 및 다른 IDE 검사 결과를 보여줍니다.

    문제를 선택하여 해결책을 확인합니다.
    그림 4. 검사 결과입니다. 문제를 선택하여 해결 방법을 확인합니다.
  6. Inspection Results 창에서 오류 카테고리, 유형 또는 문제를 펼쳐서 선택하면 검사 결과를 확인할 수 있습니다.

    검사 보고서 창에는 검사 결과 창에서 선택한 오류 카테고리, 유형 또는 문제의 검사 보고서가 표시되며 오류의 이름과 위치가 표시됩니다. 경우에 따라, 검사 보고서는 문제 개요와 같이 문제를 수정하는 데 도움이 되는 다른 정보를 표시합니다.

  7. 검사 결과 창의 트리 보기에서 카테고리, 유형 또는 문제를 마우스 오른쪽 버튼으로 클릭하여 컨텍스트 메뉴를 표시합니다.

    컨텍스트에 따라 다음 작업을 할 수 있습니다.

    • 소스로 이동합니다.
    • 선택한 항목을 제외 및 포함합니다.
    • 문제를 억제합니다.
    • 설정을 변경합니다.
    • 검사 알림을 관리합니다.
    • 검사를 다시 실행합니다.

툴바 버튼, 컨텍스트 메뉴 항목, 검사 보고서 필드에 대한 설명은 Inspection Results 도구 창을 참고하세요.

맞춤 범위 사용

다음과 같이 Android 스튜디오에서 제공되는 맞춤 범위 중 하나를 사용합니다.

  1. Specify Inspection Scope 대화상자에서 Custom scope를 선택합니다.
  2. Custom scope 목록을 클릭하여 옵션을 표시합니다.

    사용할 검사 범위 선택
    그림 5. 사용할 맞춤 범위를 선택합니다.
    • 모든 위치: 모든 파일
    • Project Files: 현재 프로젝트의 모든 파일입니다.
    • Project Source Files: 현재 프로젝트의 소스 파일만 해당합니다.
    • Project Production Files: 현재 프로젝트의 프로덕션 파일만 해당합니다.
    • Project Test Files: 현재 프로젝트의 테스트 파일만 해당합니다.
    • Scratches and Consoles: 현재 프로젝트에서 열어 둔 스크래치 파일과 콘솔만 해당합니다.
    • Recently Viewed Files: 현재 프로젝트에서 최근에 본 파일만 해당합니다.
    • Current File: 현재 프로젝트에 있는 현재 파일만 해당합니다. 파일 또는 폴더를 선택했을 때 나타납니다.
    • Selected Directory: 현재 프로젝트의 현재 폴더만 해당합니다. 폴더를 선택했을 때 나타납니다.
    • Class Hierarchy: 이 옵션을 선택하고 OK를 클릭하면 현재 프로젝트의 모든 클래스와 함께 대화상자가 표시됩니다. 대화상자의 Search by Name 필드를 사용하여 검사할 클래스를 필터링하고 선택합니다. 클래스 목록을 필터링하지 않으면 코드 검사에서 모든 클래스를 검사합니다.
  3. 프로젝트에 VCS가 구성된 경우 수정된 파일로만 검색을 제한하는 옵션도 있습니다.

  4. OK를 클릭합니다.

맞춤 범위 만들기

사용 가능한 맞춤 범위에 포함되지 않는 파일과 디렉터리를 검사하려면 맞춤 범위를 만들 수 있습니다.

  1. Specify Inspection Scope 대화상자에서 Custom scope를 선택합니다.
  2. Custom Scope 목록 뒤에 있는 점 세 개를 클릭합니다.

    Specify Inspection Scope 대화상자
    그림 6. Specify Inspection Scope 대화상자

    Scopes 대화상자가 나타납니다.

    맞춤 범위 만들기
    그림 7. 맞춤 범위를 만듭니다.
  3. 대화상자의 왼쪽 상단에 있는 버튼을 클릭하여 새 범위를 정의합니다.
  4. 표시되는 Add Scope 목록에서 Local을 선택합니다.

    로컬 범위와 공유 범위는 모두 프로젝트 내에서 Inspect Code 기능에 사용됩니다. Shared 범위는 범위 필드가 있는 다른 프로젝트 기능에서도 사용할 수 있습니다. 예를 들어 Edit Settings 를 클릭하여 Find Usages의 설정을 변경하면 이후 표시되는 대화상자의 Scope 필드에서 공유 범위를 선택할 수 있습니다.

    Find Usages 대화상자에서 공유 범위 선택
    그림 8. Find Usages 대화상자에서 공유 범위를 선택합니다.
  5. 범위에 이름을 지정하고 OK를 클릭합니다.

    Scopes 대화상자의 오른쪽 창에 맞춤 범위를 정의할 수 있는 옵션이 나타납니다.

  6. 목록에서 Project를 선택합니다.

    이용 가능한 프로젝트 목록이 나타납니다.

    참고: 프로젝트 또는 패키지의 맞춤 범위를 만들 수 있습니다. 단계는 동일합니다.

  7. 프로젝트 폴더를 펼치고 맞춤 범위에 추가할 항목을 선택한 다음, 포함 또는 제외 여부를 선택합니다.

    맞춤 범위 정의하기
    그림 9. 맞춤 범위를 정의합니다.
    • Include: 이 폴더와 그 안의 파일을 포함하지만 하위 폴더는 포함하지 않습니다.
    • Include Recursively: 이 폴더와 그 안의 파일, 그리고 하위 폴더와 그 안의 파일까지 포함합니다.
    • Exclude: 이 폴더와 그 안의 파일을 제외하지만 하위 폴더는 제외하지 않습니다.
    • Exclude Recursively: 이 폴더와 그 안의 파일, 그리고 하위 폴더와 그 안의 파일까지 제외합니다.

    그림 10은 main 폴더가 포함되어 있고 javares 폴더는 재귀적으로 포함된 상태를 보여줍니다. 파란색은 부분적으로 포함된 폴더를 나타내고 녹색은 재귀적으로 포함된 폴더와 파일을 나타냅니다.

    맞춤 범위 패턴의 예
    그림 10. 맞춤 범위의 패턴 예시
    • java 폴더를 선택하고 Exclude Recursively를 클릭하면 java 폴더와 그 안의 모든 폴더 및 파일을 강조표시하는 녹색이 사라집니다.
    • 녹색으로 강조표시된 MainActivity.kt 파일을 선택하고 Exclude를 클릭하면 MainActivity.kt에서 녹색 강조표시가 사라지지만 java 폴더에 있는 그 외 모든 파일은 녹색으로 유지됩니다.
  8. OK(확인)을 클릭합니다. 맞춤 범위가 목록 하단에 표시됩니다.

검사 프로필 검토 및 수정

Android 스튜디오에는 Android 업데이트를 통해 업데이트된 린트 및 기타 검사 파일들이 있습니다. 이 프로필을 그대로 사용하거나 이름, 설명, 심각도, 범위를 수정할 수 있습니다. 또한 프로필 그룹 전체 또는 그룹 내 개별 프로필을 활성화/비활성화할 수도 있습니다.

Inspections 설정에 액세스하려면 다음 단계를 따르세요.

  1. File(파일) > Settings(설정)를 선택합니다. (Windows의 경우) 또는 Android 스튜디오 > Preferences(macOS 또는 Linux의 경우)를 선택합니다.
  2. 편집기 > 검사를 선택합니다.
  3. Inspections 창에 지원되는 검사 및 설명 목록이 표시됩니다.

    지원되는 검사 및 설명
    그림 11. 지원되는 검사 및 설명
  4. Profile 목록을 선택하여 Default 검사 (Android 스튜디오)와 Project Default 검사 (활성 프로젝트) 간에 전환합니다.

    자세한 내용은 IntelliJ 프로필 관리 페이지를 참고하세요.

  5. 왼쪽 창의 Inspections 목록에서 최상위 프로필 카테고리를 선택하거나 그룹을 펼쳐서 특정 프로필을 선택합니다.

    프로필 카테고리를 선택하면 해당 카테고리에 있는 모든 검사를 단일 검사로 수정할 수 있습니다.

  6. Show Schema Actions 스키마 작업 표시 아이콘 목록을 선택하여 검사 복사, 이름 바꾸기, 설명 추가, 내보내기, 가져오기를 수행합니다.
  7. 완료되면 OK를 클릭합니다.