OpenJDK,Java 的开源参考实现(也是 Oracle JDK 的基础)已经达到了一个重要的里程碑。包含了类库代码的 jdk 仓库,在将要发布的 JDK 9 中已经消除了所有的编译警告,Joe Darcy 和其他一些人领导 Oracle 工程师们在这上面耕耘了数月,也就此画上完美句号,这其中也包含了一些来自社区的贡献。
Java 像其他编程语言,例如 C 一样,支持一种检查模式(linting mode),它可以对糟糕的代码样式和可能不安全的编码做法发出警告。包括的例子有,switch/case 语句中是否有 default 处理,以及对 Java 原始类型的使用等。虽然检查产生的警告看起来比较温和,但是 bug 就有可能隐藏在这些被标注出来的代码背后。消除警告可以暴露真正的问题,其中一些问题还隐藏得很深。
OpenJDK 团队解决这个问题的办法是,先消除一种类型的警告,然后再把这种警告设为致命错误(fatal error),这样以后带有这种警告的代码就无法提交到仓库中了。等到所有的警告类型都消除后,编译过程会打开-Xlint:all -Werror
开关,这样编译 JDK 的时候,所有的警告都会变成致命错误。
最后,Darcy 写了一篇博文,在文中,他给那些也希望用这种方法清理自己项目中的编译警告的Java 开发者们提出了建议。
评论