Checkstyle可以验证字符串值是否等于类或文件名?

时间:2017-11-07 14:10:14

标签: java android proguard static-analysis checkstyle

我有一个Android项目,大多数类都定义了一个包含类名的字符串常量,用作Log类方法的标记参数。例如:

public final class MyFileReader
{
    private static final String LOG_TAG = "MyFileReader";

    // rest of class
}

是否可以编写CheckStyle规则来检查以这种方式定义的任何值是否与类的名称(或文件名的根)相匹配?请记住:

  • 并非每个班级都会定义一个LOG-TAG值,但是他们这样做的地方必须与班级名称相匹配。
  • 不幸的是,值确实需要是字符串常量。使用MyFileReader.class.getSimpleName()不是一个选项,因为在发布版本中,类名称由ProGuard优化。

1 个答案:

答案 0 :(得分:1)

有趣的用例!我认为你可以通过使用Checkstyle Addons(我是维护者)编写自己的支票而逃脱。它提供了您可以使用的LocationReference检查。

enabling Checkstyle Addons之后,配置如下所示的检查:

<module name="LocationReference">
    <property name="variableNames" value="LOG_TAG" />
    <property name="location" value="simpleclass"/>
</module>