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.ApplicationAssociate和com.sun.faces.application.ApplicationResourceBundle.
我已经找到了另一个关于此的线索,他们中的大多数人说我应该更改规则以排除特定的包或类.
我认为简单地规避规则是没有意义的,所以我想知道是否有针对这些sun类的实际java API(1.7或1.8)类.
如果没有,我相信最好保持警报,直到Java API类可用于这些sun类.
有关此的任何提示/建议吗?
这是SonarQube中的一个错误.它overgeneralizing的sun.*封装中提到为什么开发者不应编写调用"太阳"套餐计划,以com.sun.*包.这是不正确的.甲骨文并不是故意在文章中提到这一点.SonarQube实际上应该只惩罚使用sun.*包或任意JRE/JDK实现内部使用的任何内容.该com.sun.*包根本不与JRE/JDK API/impl相关.
要么关闭S1191规则,要么将所有命中都标记com.sun.*为误报.