java - SonarQube - 可以通过存储外部可变对象来公开内部表示

标签 java sonarqube

以下代码在通过 SonalQube 运行时出现代码漏洞错误。

public class Myclass{

String[] text;

public MyClass(String [] texts){
this.texts = texts;
}
}

上面的代码抛出漏洞错误:可能通过存储外部可变对象来暴露内部表示

最佳答案

正如评论中已经提到的,数组在 Java 中通过引用传递(与所有复杂对象一样)。 这意味着有机会将有效的 Sting[] 传递给您的类,在您检查并存储它之后,调用者将数组的内容更改为他想要的内容。

因此,如果您想消除该漏洞,您需要像这样存储数组:

public class SaveArrayContainer {

public String[] data;

    public SaveArrayContainer(String[] array) {
        data = Arrays.copyOf(array, array.length);
    }
}

关于java - SonarQube - 可以通过存储外部可变对象来公开内部表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58347899/

相关文章:

java - 如何获取Android SD卡大小?

java - Spring FactoryBean 的使用

openshift - OpenShift 上的 OpenJDK : "NoSuchAlgorithmException: EC AlgorithmParameters not available"

java - 为什么 sonar-maven-plugin 在加载全局设置或 Activity 规则时挂起?

java - Sonar 问题 "Method parameters, caught exceptions and foreach variables should not be reassigned"

java - SonarQube - 显示考虑多个项目的代码覆盖率

java - 是否可以在外部分析器下运行 JMH 基准测试?

java - 在 EJB 上下文中从 DataSource 调用过程时出现 "Stored procedure ' xxx ' may be run only in unchained transaction mode."错误

java - Sonar 引用插件小部件未在仪表板中显示

java - Sonar WS : How to get the total unresolved bugs count using Sonar Webservice