如何配置 lint 以忽略特定情况?

How to configure lint to ignore specific cases?

如果字段是通过一堆注释操作的,有时 lint 会产生错误的警告。举个常见的例子:

  @SerializedName("id") @Expose private Integer id;

字段 id 仅通过 gson.fromJson() 分配。这种操作对于 lint 是不可见的,因此它会抛出警告 variable id is never assigned
所以我想配置 lint,在这种特殊情况下,忽略检查是否曾经分配过字段,是否用 @SearializedName 注释(请不要建议必须为每个字段手动设置的原始 @SuppressWarnings("unused")如果曾经使用过字段,将阻止检查)

Gson 使用在运行时发生的反射序列化字段。 UnusedAssignment 检查发现满足以下任一条件的变量:

  • the variable never gets read after assignment
  • the value is always overwritten with another assignment before the next variable read
  • the variable initializer is redundant (for one of the above two reasons) - the variable is never used.

消除此特定检查的警告的唯一选择是通过更新 lint.xml 或 @SuppressWarnings("unused") 来抑制它们。如果您真的不想做这些事情中的任何一件,那么可以编写一个 custom Lint inspection 来忽略带有 @SerializedName 注释的字段。

这种方法的缺点是,如果您想在 Gson 未序列化的 class 中使用 @SerializedName,如果变量未使用,您将不再收到警告。它也比将 @SuppressWarnings("unused") 添加到 GSON 模型 classes.

的顶部复杂得多