면접 질문 목록으로 가기
면접 질문실전 질문꼬리 질문

안드로이드 개발에서의 Lint 검사

skydovesJaewoong Eum (skydoves)||9분 소요

안드로이드 개발에서의 Lint 검사

안드로이드 개발에서 깔끔하고 일관되며 오류 없는 코드를 유지하는 것은 앱의 안정성과 장기적인 유지보수에 필수적입니다. Lint는 Android Studio에 내장된 정적 코드 분석(static code analysis) 도구로, 앱을 실행하거나 빌드하기 전에 잠재적인 버그, 코드 스타일 문제, 성능 병목 지점 등을 사전에 감지할 수 있도록 도와줍니다. 면접에서도 코드 품질 관련 질문이 나올 때 Lint에 대한 이해는 실무 역량을 보여주는 좋은 지표가 되므로, 기본 개념부터 활용법까지 확실히 알아 두시는 것이 좋습니다.

이번 면접 질문을 통하여 아래 내용들을 학습하실 수 있습니다.

  • Lint가 무엇이며, 코드를 실행하지 않고도 어떻게 분석하는지 설명할 수 있습니다.
  • Lint가 감지하는 이슈의 카테고리와 심각도 수준을 구분할 수 있습니다.
  • Gradle에서 Lint 규칙을 설정하여 팀 전체의 코드 표준을 적용하는 방법을 이해할 수 있습니다.
  • baseline 파일을 활용하여 기존 프로젝트에 Lint를 점진적으로 도입하는 전략을 적용할 수 있습니다.
  • Lint가 CI 파이프라인에 어떻게 통합되어 자동화된 코드 품질 검사를 수행하는지 파악할 수 있습니다.
  • 특정 경고를 코드 수준에서 적절히 억제(suppress)하는 방법을 숙지할 수 있습니다.
  • 프로젝트 고유의 패턴에 맞는 커스텀 Lint 규칙이 필요한 시점을 판단할 수 있습니다.

Lint란 무엇인가

Lint는 코드베이스를 실행하지 않고 분석하는 정적 분석 도구입니다. Kotlin, Java, XML 등 프로젝트 파일을 스캔하여 문제가 될 수 있는 패턴이나 위험한 구조를 식별합니다. 사용하지 않는 리소스, 잘못된 권한 설정부터 잠재적인 메모리 누수, 접근성(accessibility) 문제까지 다양한 이슈를 감지할 수 있습니다.

Lint에는 사전 정의된 대규모 검사 집합이 포함되어 있으며, 프로젝트의 특정 가이드라인에 맞춘 커스텀 규칙도 지원합니다. IDE 내에서 코드를 작성하는 도중 인라인 경고를 통해 실시간으로 피드백을 제공할 뿐만 아니라, Gradle 빌드 과정에서도 자동으로 실행되어 일관된 코드 품질을 유지하는 데 기여합니다. 이러한 검사 규칙은 Google과 안드로이드 팀이 관리하며, Android Gradle Plugin이 업데이트될 때마다 함께 갱신됩니다.

Lint 검사의 카테고리

Lint는 여러 카테고리에 걸쳐 포괄적인 검사를 제공합니다.

  • 정확성(Correctness): 예상대로 동작하지 않을 수 있는 코드를 감지합니다. 잘못된 뷰 ID, 누락된 번역, 프로젝트의 최소 SDK보다 높은 API 호출, 메서드 호출 시 잘못된 매개변수 순서 등이 여기에 해당합니다.
  • 보안(Security): 노출된 ContentProvider, 취약한 암호화 사용, 평문 트래픽(cleartext traffic), 안전하지 않은 Intent 처리 등 보안 취약점을 경고합니다.
  • 성능(Performance): onDraw() 내에서 불필요한 객체 할당, UI 스레드에서의 블로킹 호출, 오버드로(overdraw), HashMap 대신 SparseArray를 사용하면 더 효율적인 경우 등 비효율적인 패턴을 식별합니다.
  • 사용성(Usability): 접근성 관련 문제와 적절하지 않은 UI 관행을 찾아냅니다. 가령, 이미지에 contentDescription 속성이 누락된 경우 등이 포함됩니다.
  • 국제화(Internationalization): 문자열 리소스, 레이아웃 방향, 로케일별 서식 처리가 올바른지 검증합니다. 문자열 리소스로 추출해야 할 하드코딩된 문자열도 감지합니다.
  • 코딩 규칙(Coding Conventions): 네이밍 규칙이나 어노테이션의 올바른 사용 등 팀 전체에서 일관된 코드 스타일과 관행을 유지하도록 권장합니다.

가령, android:textandroid:contentDescription에 동일한 값이 들어 있으면 접근성 측면에서 좋지 않은 관행이므로 Lint가 다음과 같은 코드를 경고합니다.

<TextView
    android:text="Click here"
    android:contentDescription="Click here"/>

이 면접 질문은 구독자 전용입니다

Dove Letter를 구독하시면 안드로이드, 코틀린 개발 관련 독점 면접 질문의 전체 내용을 볼 수 있습니다.

구독하기
면접 질문 목록으로 가기