Dan*_*ray 1 java jsf sonarqube
在Java Web项目(在Tomcat&JSF&Spring上运行)上,编写了一个自定义渲染器,即使要转换的值也要调用自定义转换器null,如下所述:JSF Custom Converter未调用null值
但是,SonarQube扫描正在检测import线路上的问题,即:
import com.sun.faces.renderkit.html_basic.TextRenderer;
Run Code Online (Sandbox Code Playgroud)
因为它是一个com.sun.*包而不是标准的Java API包.规则说明指出:
不应使用"sun.*"包中的类(鱿鱼:S1191)
sun.*或com.sun.*包中的类被视为实现细节,而不是Java API的一部分.迁移到新版本的Java时,它们可能会导致问题,因为没有向后兼容性保证.同样,当转移到不同的Java供应商(例如OpenJDK)时,它们可能会导致问题.
这些类几乎总是由应该使用的Java API类包装.
不合规的代码示例
Run Code Online (Sandbox Code Playgroud)import com.sun.jna.Native; // Noncompliant import sun.misc.BASE64Encoder; // Noncompliant
这很有道理,但我找不到这个类的Java API包装器,只找到该类所在的源代码和包...在这种情况下采取的适当措施是什么?
我认为这是一种误报.用法com.sun.faces是使用内部实现特定的类,但对于JSF而不是JDK.其他JVM或某些新版本的JDK不会删除这些类.您只需将代码绑定到Sun的(Oracle)JSF实现,这对您来说可能没问题.
在GitHub上查看该规则的代码,看起来它可以配置为避免这种误报,但将exclude属性设置为以逗号分隔的列表.我不知道你在UI中可以做到这一点,但https://docs.sonarqube.org/display/SONARQUBE50/Configuring+Rules可能是一个起点.
| 归档时间: |
|
| 查看次数: |
574 次 |
| 最近记录: |