java - Checkstyle 规则以防止调用某些方法和构造函数

标签 java coding-style checkstyle

是否可以使用 Checkstyle 来禁止使用某些使用系统相关默认值(区域设置、字符集等)的构造函数或方法。我更喜欢强制执行一项政策,程序员应该明确说明依赖于系统的值。所以我认为以下元素是危险的:

  • java.io.FielWriter 的所有构造函数
    • 使用系统相关的编码
  • java.io.OutputStreamWriterOutputStreamWriter(OutputStream os) 构造函数
    • 使用系统相关的编码
  • java.lang.String.toLowerCase() 方法
    • 使用系统默认语言环境
  • java.util.Calendar.getInstance() 方法
    • 使用系统默认语言环境和默认时区

(列表还在继续,你明白了)。

是否可以使用 Checkstyle 5.5 强制执行此操作?

最佳答案

您不能默认执行此操作。但是,您可以实现自己的检查器来检查这些方法。

第一个选项是使用 Miscellaneous->Regexp。这显然只有在您可以使用正则表达式找到违规行为时才有可能。您将需要设置 illegalPattern = true。我认为这是一个很好的起点。

第二个选项是创建您自己的支票。参见 Writing Checks .

编写跳棋有局限性。第一个也是最重要的是您看不到其他文件。没有任何交叉检查。来自网站:

  1. You cannot determine the type of an expression.
  2. You cannot see the content of other files. (although you can save processed files for use later)

This means that you cannot implement some of the code inspection features that are available in advanced IDEs like IntelliJ IDEA. For example you will not be able to implement a Check that finds redundant type casts or unused public methods.

因此您无法检查例如 java 是否正在调用一种方法,该方法具有区域设置的替代方法。您可以使用不允许调用的方法黑名单。因此,例如调用 new FileWriter() 将检查传递的参数数量等。

关于java - Checkstyle 规则以防止调用某些方法和构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8416870/

相关文章:

spring - 您如何应对 Spring beans 增加的额外复杂性?

java - Checkstyle - 我可以更改 MethodParamPad 的 `' (' should be on the previous line?` 规则吗?

java - eclipse checkstyle 错误无法初始化模块 TreeWalker - TreeWalker 不允许作为 FileLength 的父级

java - 在 JSP 中显示文件系统存储的图像

java - 基本结构/语法/方法帮助。基础测验类(class)

java - Glassfish 项目似乎没有在 Tomcat 服务器上运行

java - 通过 Maven 运行时,Checkstyle 可以定位特定文件吗?

java - 使用模式将多个字符串与一个长字符串匹配

javascript - 在 react 导入 3rd 方 jQuery,CSS,Java 脚本到 index.html 比使用 npm 或 yarn 更好

javascript - jQuery 展开和折叠列表