【问题标题】:Object not created locally未在本地创建的对象
【发布时间】:2016-04-27 10:27:48
【问题描述】:

我的方法中有下面的sn-p:

JSONParser jsonParser = new JSONParser();
try {
    Object obj = jsonParser.parse(new InputStreamReader(is));
    JSONObject jsonObj = (JSONObject) obj;
    JSONArray jsonArray = (JSONArray) jsonObj.get("JSON_NODE");
    String jsonStr = jsonArray.toJSONString();
    return (JSONObject)jsonParser.parse(jsonStr);     
}

在 SonarQube 中,我遇到了一个问题“对象未在本地创建”

String jsonStr = jsonArray.toJSONString();

我试图了解我为什么会得到这个。有什么帮助吗?

【问题讨论】:

标签: java sonarqube pmd


【解决方案1】:

为什么违规?

此违规与在对象上调用方法的事实有关 它不是在方法中创建的,而是作为 作为对本地之一的方法调用的结果返回对象 对象。

您的jsonArray 对象满足上述条件。

如何解决,

查看列出的一个示例here,您的代码可以固定在类似的行上。

根据得墨忒耳定律,对象O 的方法M 只能调用以下类型的方法:

1.Methods of Object O itself
2.Methods of Object passed as an argument
3.Method of object, which is held in instance variable
4.Any Object which is created locally in method M

【讨论】:

    猜你喜欢
    • 2020-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多