https://github.com/googlesamples/android-custom-lint-rules
UAST Tree 검사
-
Help | Edit Custom Properties
- idea.is.internal=true
- Restart IDE
-
Tools | Internal Actions | UAST | Dump UAST Tree (By Each PsiElement)
Enabling Internal Mode : https://plugins.jetbrains.com/docs/intellij/enabling-internal.html
Inspecting UAST Tree : https://plugins.jetbrains.com/docs/intellij/uast.html#inspecting-uast-tree
- Java/Kotlin 파일에 존재하는 Local Property/Field를 Detect
- 필드 정의보다 앞에 존재하는 Document, Comment는 제외
Detector Source : PropertyWithExcludeFirstCommentDetector
Kotlin | Java |
---|---|
Java 클래스 내에서 선언한 필드 중 동일한 클래스 내의 Inner 타입 필드를 Detect
Detector Source : https://github.com/Pluu/LintStudy/blob/master/lint/src/main/java/com/pluu/lint/InnerCheckerOnJavaDetector.kt
Java |
---|
특정 함수 & 특정 파라미터 값을 사용하는 케이스를 Detect
- 샘플 : indexOf 함수의 파라미터 1을 전달하는 경우
Detector Source : https://github.com/Pluu/LintStudy/blob/master/lint/src/main/java/com/pluu/lint/FindMethodWithArgumentDetector.kt
Kotlin | Java |
---|---|
TypedArray 사용시 AutoCloseable use 사용시 이슈
Detector Source : https://github.com/Pluu/LintStudy/blob/master/lint/src/main/java/com/pluu/lint/SafeUseForTypedArrayDetector.kt
Kotlin |
---|
Detector Source : https://github.com/Pluu/LintStudy/blob/master/lint/src/main/java/com/pluu/lint/RequiredCustomViewAttributeDetector.kt
XML |
---|
LiveData 사용시 Custom observeNotNull extension을 사용시 Nothin 타입은 null로 처리되므로 탐지하는 Lint
Detector Source : https://github.com/Pluu/LintStudy/blob/master/lint/src/main/java/com/pluu/lint/LiveDataObserveNotNullDetector.kt
Kotlin |
---|
Detector Source : https://github.com/Pluu/LintStudy/blob/master/lint/src/main/java/com/pluu/lint/ViewModelScopeLaunchDetector.kt
기본 Launch 사용 | Custom Launch와 CEH 체크 |
---|---|
Detector Source : https://github.com/Pluu/LintStudy/blob/master/lint/src/main/java/com/pluu/lint/LazyBundleDetector.kt
결과 화면 |
---|
DataBindingAdapter 사용시 잘못 생성되는 케이스 탐지
Detector Source : https://github.com/Pluu/LintStudy/blob/master/lint/src/main/java/com/pluu/lint/DataBindingDuplicationDetector.kt
DataBinding 코드 | Bytecode로 디컴파일된 모습 |
---|---|
Detector Source : https://github.com/Pluu/LintStudy/blob/master/lint/src/main/java/com/pluu/lint/TwoMoreBlankLineDetector.kt
결과 화면 |
---|
API Guide line : Elements accept and respect a Modifier parameter
Detector Source : https://github.com/Pluu/LintStudy/blob/master/lint/src/main/java/com/pluu/lint/compose/RequiredModifierParameterDetector.kt
결과 화면 |
---|
Detector Source : https://github.com/Pluu/LintStudy/blob/master/lint/src/main/java/com/pluu/lint/OnCreateSuperCallDetector.kt
코드 | Lint 결과 |
---|---|