使用IntDef时,Android Studio / lint无法捕获所有错误

时间:2019-04-26 10:52:25

标签: android android-studio annotations lint

我期望使用IntDefs时,皮棉(不是编译器)会捕获某些错误的分配。 Android Studio / lint正确捕获了以下内容:

@IntDef({MyintDef.A, MyintDef.B})
@Retention(RetentionPolicy.SOURCE)
public @interface MyintDef {
  int A = 0;
  int B = 1;
}

private static void assignMyEnum() {
  @MyintDef int m = MyintDef.A;
  @MyintDef int n = 10; // caught by lint + Android Studio
}

@MyintDef
private static int returnMyEnum() {
  return 10; // caught by lint + Android Studio
}

但不是以下内容:

private static void assignMyEnum() {
  @MyintDef int m = MyintDef.A;
  @MyintDef int n = MyintDef.A + 10; // not caught by lint + Android Studio
}

@MyintDef
private static int returnMyEnum() {
  return MyintDef.A + 10; // not caught by lint + Android Studio
}

即使在命令行./gradlew lint上手动运行lint之后,第二个代码块也不会标记任何错误。

我知道,枚举的注释只是棉绒检查,如herehere所指出的那样,但是我期望在命令行上运行手动棉绒以在错误报告中将其标记出来。

我的问题有两个:

  1. 从命令行运行lint来查看第二个代码示例中的错误时,是否需要在AS中启用任何功能或设置一些标志?
  2. 如果第二种代码示例中没有捕获错误的方法,那么枚举类型真的值得吗,因为我们获得了一些空间,但在类型安全性上却损失了很多?

0 个答案:

没有答案