Checkstyle 能否验证字符串值是否等于 class 或文件名?
Can Checkstyle verify that a string value is equal to the class or file name?
我有一个 Android 项目,其中大多数 classes 定义了一个包含 class 名称的字符串常量,用作 Log
class 方法。例如:
public final class MyFileReader
{
private static final String LOG_TAG = "MyFileReader";
// rest of class
}
是否可以编写一个 CheckStyle 规则来检查以这种方式定义的任何值是否与 class 的名称(或文件名的根)相匹配?请牢记:
- 并非每个 class 都会定义一个
LOG-TAG
值,但它们定义的位置必须与 class 名称匹配。
- 不幸的是,该值确实需要是一个字符串常量。这不是使用
MyFileReader.class.getSimpleName()
的选项,因为在发布版本中 class 名称由 ProGuard. 优化
有趣的用例!我认为您可以使用 Checkstyle Addons (of which I am the maintainer). It provides a LocationReference 您可以使用的支票,而无需编写自己的支票。
在enabling Checkstyle Addons之后,像这样配置检查:
<module name="LocationReference">
<property name="variableNames" value="LOG_TAG" />
<property name="location" value="simpleclass"/>
</module>
我有一个 Android 项目,其中大多数 classes 定义了一个包含 class 名称的字符串常量,用作 Log
class 方法。例如:
public final class MyFileReader
{
private static final String LOG_TAG = "MyFileReader";
// rest of class
}
是否可以编写一个 CheckStyle 规则来检查以这种方式定义的任何值是否与 class 的名称(或文件名的根)相匹配?请牢记:
- 并非每个 class 都会定义一个
LOG-TAG
值,但它们定义的位置必须与 class 名称匹配。 - 不幸的是,该值确实需要是一个字符串常量。这不是使用
MyFileReader.class.getSimpleName()
的选项,因为在发布版本中 class 名称由 ProGuard. 优化
有趣的用例!我认为您可以使用 Checkstyle Addons (of which I am the maintainer). It provides a LocationReference 您可以使用的支票,而无需编写自己的支票。
在enabling Checkstyle Addons之后,像这样配置检查:
<module name="LocationReference">
<property name="variableNames" value="LOG_TAG" />
<property name="location" value="simpleclass"/>
</module>