java - 不应使用来自 "com.sun.*"和 "sun.*"包的 SonarQube 规则类

标签 java jsf jakarta-ee sonarqube

我有一个具有以下特征的 J2EE 项目:

CDI 1.0
Dynamic Web Module 3.0
Java 1.7 (it's being changed to 1.8)
JSF 2.0
JPA 2.0

我正在针对它运行 SonarQube 5.6.6 规则,感觉符合规则

不应使用“com.sun.”和“sun.”包中的类
鱿鱼:S1191

com.sun.* 和 sun.* 包中的类被视为实现细节,不是 Java API 的一部分。在迁移到新版本的 Java 时,它们可能会导致问题,因为没有向后兼容性保证。此类类几乎总是由应该改用的 Java API 类包装。

因为我正在使用类 com.sun.faces.application.ApplicationAssociatecom.sun.faces.application.ApplicationResourceBundle

我已经搜索了关于此的其他线程,其中大多数都说我应该更改规则以排除特定的包或类。

我认为简单地规避规则是没有意义的,所以我想知道这些 sun 类是否有实际的 java API(1.7 或 1.8)类。

如果没有,我认为最好保持警惕,直到 java API 类可用于这些 sun 类。

对此有什么提示/建议吗?

最佳答案

这是 SonarQube 中的一个错误。它过度概括了 sun.* 包,如 Why Developers Should Not Write Programs That Call 'sun' Packages 中所述。到 com.sun.* 包。这是不正确的。 Oracle 并没有在上面链接的文章中这么说。 SonarQube 实际上应该只惩罚 sun.* 包的使用或任意 JRE/JDK 实现内部使用的任何内容。 com.sun.* 包与 JRE/JDK API/impl 完全无关。

要么关闭 S1191 规则,要么将 com.sun.* 上的所有命中标记为误报。

另见:

关于java - 不应使用来自 "com.sun.*"和 "sun.*"包的 SonarQube 规则类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43869567/

相关文章:

java - Tomcat - 上下文路径匹配究竟是如何工作的?

java - 如何从 Android WebView 进行 google 登录并在成功登录后重定向回主网站?

java - Spring Boot应用程序oneToMany关系中的assertTrue异常

jsf - 如何获取 p :datatable direclty on selecting the row? 的选定行

jsp - EL有什么函数可以得到一个数的绝对值吗?

java - 如何在 Struts 中显示成功消息?

java - java中可以使用list来实现复合模式吗?

java - 在 Android ListView 中,加载圆形图像和文本的正确方法是什么?

jsf - java.io.NotSerializedException : org.omnifaces.taghandler.Converter

java - 支持六边形/端口和适配器架构的JEE服务器