我期望使用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之后,第二个代码块也不会标记任何错误。
我知道,枚举的注释只是棉绒检查,如here和here所指出的那样,但是我期望在命令行上运行手动棉绒以在错误报告中将其标记出来。
我的问题有两个: