是否可以使用 Checkstyle 来禁止使用某些使用系统相关默认值(区域设置、字符集等)的构造函数或方法。我更喜欢强制执行一项政策,程序员应该明确了解系统相关的值。所以我认为以下物品是危险的:
- all the constructors of
java.io.FielWriter
- the
OutputStreamWriter(OutputStream os)
constructor of java.io.OutputStreamWriter
- the
java.lang.String.toLowerCase()
method
- The
java.util.Calendar.getInstance()
method
(这样的例子不胜枚举,你就明白了)。
是否可以使用 Checkstyle 5.5 强制执行此操作?
默认情况下您无法执行此操作。但是,您可以实现自己的检查器来检查这些方法。
第一个选项是使用 Miscellaneous->Regexp。显然,只有当您可以使用正则表达式找到违规行为时,这才有可能。您需要设置 invalidPattern = true。我认为这将是一个很好的起点。
第二个选项是创建您自己的支票。看写支票 http://checkstyle.sourceforge.net/writingchecks.html.
编写检查器有一些限制。第一个也是最重要的是您看不到其他文件。没有任何交叉检查。从网站:
- 您无法确定表达式的类型。
- 您无法看到其他文件的内容。 (尽管您可以保存处理后的文件以供以后使用)
这意味着你无法实现一些代码检查
IntelliJ IDEA 等高级 IDE 中提供的功能。为了
例如,您将无法实施发现冗余的检查
类型转换或未使用的公共方法。
因此,您无法检查 java 是否正在调用一个具有 Locale 替代方案的方法。您可以使用不允许调用的方法黑名单。因此,例如调用 new FileWriter() 将检查传递的参数数量等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)