【问题标题】:How to configure lint to ignore specific cases?如何配置 lint 以忽略特定情况?
【发布时间】:2016-04-08 12:13:21
【问题描述】:

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

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

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

【问题讨论】:

    标签: android lint


    【解决方案1】:

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

    • 变量在赋值后永远不会被读取
    • 在读取下一个变量之前,该值总是被另一个赋值覆盖
    • 变量初始值设定项是多余的(出于上述两个原因之一) - 从未使用过该变量。

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

    这种方法的缺点是如果你想在一个没有被 Gson 序列化的类中使用@SerializedName,如果一个变量未被使用,你将不再收到警告。这也比将@SuppressWarnings("unused") 添加到 GSON 模型类的顶部要复杂得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 2018-04-16
      • 2020-12-24
      • 2015-11-21
      相关资源
      最近更新 更多