您如何实施 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()