SonarQube规则不应使用"com.sun.*"和"sun.*"包中的类

Cás*_*sio 3 java jsf java-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
Run Code Online (Sandbox Code Playgroud)

我正在运行SonarQube 5.6.6规则,它感觉到了规则

不应使用"com.sun."和"sun. "包中的 类
squid: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类.

有关此的任何提示/建议吗?

Bal*_*usC 9

这是SonarQube中的一个错误.它overgeneralizing的sun.*封装中提到为什么开发者不应编写调用"太阳"套餐计划,以com.sun.*包.这是不正确的.甲骨文并不是故意在文章中提到这一点.SonarQube实际上应该只惩罚使用sun.*包或任意JRE/JDK实现内部使用的任何内容.该com.sun.*包根本不与JRE/JDK API/impl相关.

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

也可以看看: