加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – SonarQube规则不应使用“com.sun.*”和“sun.*”包中的

发布时间:2020-12-15 04:38:37 所属栏目:Java 来源:网络整理
导读:我有一个具有以下特征的J2EE项目: CDI 1.0Dynamic Web Module 3.0Java 1.7 (it's being changed to 1.8)JSF 2.0JPA 2.0 我正在运行SonarQube 5.6.6规则,它感觉到了规则 来自“com.sun”的类.和“太阳”.不应该使用包裹 鱿鱼:S1191 com.sun.*和sun.*包中的
我有一个具有以下特征的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”的类.和“太阳”.不应该使用包裹
鱿鱼: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中的一个错误.太过于推广太阳.*包在 Why Developers Should Not Write Programs That Call ‘sun’ Packages中提到com.sun.*包.这是不正确的.甲骨文并不是故意在一篇文章中说的. SonarQube实际上应该只惩罚sun.*包或任意JRE / JDK实现内部使用的任何内容. com.sun.*包根本不与JRE / JDK API / impl相关.

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

也可以看看:

> What is inside com.sun package?
> SonarQube users: S1191 too strict

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读