您如何实施 LintFix 以将缺少的注释添加到 Android 中的 class 定义
How do you implement LintFix to add missing annotation to class definition in Android
我正在调查当前 Android 应用程序中的自定义 Lint 规则开发。
我的检测器发现我的项目中所有未使用特定注释进行注释的活动。
我想创建一个 LintFix 来添加缺少的注释,如下所示:-
Activity 错误
class MyActivity : AppCompatActivity() {
...
}
Activity固定
@MyMissingAnnotation
class MyActivity : AppCompatActivity() {
...
}
我开发的代码是:-
val fix = LintFix.create()
.replace()
.text("")
.with("@MyMissingAnnotation")
.build()
但是这会导致以下损坏代码
class @MyMissingAnnotationMyActivity : AppCompatActivity() {
...
}
因为我的报告与此类似
context.report(
ISSUE, node,
context.getNameLocation(node),
"Activities require the @MyMissingAnnotation annotation.",
fix
)
如何在 class 中的正确位置添加所需的注释?
您可以使用 shortenNames()
、beginning()
和 reformat(true)
使您的修复更合理
val fix = LintFix.create()
.replace()
.text("")
.with("@com.foo.bar2.MyMissingAnnotation")
.beginning()
.shortenNames()
.reformat(true)
.range(context.getLocation(node as UElement))
.build()
我正在调查当前 Android 应用程序中的自定义 Lint 规则开发。
我的检测器发现我的项目中所有未使用特定注释进行注释的活动。
我想创建一个 LintFix 来添加缺少的注释,如下所示:-
Activity 错误
class MyActivity : AppCompatActivity() {
...
}
Activity固定
@MyMissingAnnotation
class MyActivity : AppCompatActivity() {
...
}
我开发的代码是:-
val fix = LintFix.create()
.replace()
.text("")
.with("@MyMissingAnnotation")
.build()
但是这会导致以下损坏代码
class @MyMissingAnnotationMyActivity : AppCompatActivity() {
...
}
因为我的报告与此类似
context.report(
ISSUE, node,
context.getNameLocation(node),
"Activities require the @MyMissingAnnotation annotation.",
fix
)
如何在 class 中的正确位置添加所需的注释?
您可以使用 shortenNames()
、beginning()
和 reformat(true)
使您的修复更合理
val fix = LintFix.create()
.replace()
.text("")
.with("@com.foo.bar2.MyMissingAnnotation")
.beginning()
.shortenNames()
.reformat(true)
.range(context.getLocation(node as UElement))
.build()