2017-11-27 75 views
0

SonarQubeはルール「可変オブジェクトへの参照を返すことで内部表現を公開する可能性があります。「可変オブジェクトへの参照を返すことによって内部表現が公開される可能性があります」

私はguide of the Carnegie Mellon Universityに基づいて、それを修正しますが、SonarQubeはまだこの問題を提起:

public Date getDatime(){ 
    return (Date)this.datime.clone();//IJTI-316 
    // .getDatime() may expose internal representation by returning *.datime 
} 

どうやって解決/この問題を回避することができますか?

+0

あなたがSonarQubeのどのバージョンを使用していますか? Java分析のためにインストールしたプラグインはどれですか? –

+0

日食では、私はSonarLintを使用しています。そしてSonarQubeバージョン6.1 –

答えて

1

クローン操作はシャローコピーを実行します。つまり、ほとんどのDateインスタンス変数は両方のインスタンスで共有されます。エラーを完全に解決するには、通常の意味でまったく新しいオブジェクトを作成する必要があります。

多分:

return new Date(this.datime.getTime()); 
+0

設定方法について教えてください:this.datime = new Date(datime.getTime()); この問題は引き続き発生します。 –

+0

もちろん、内部表現を別の内部表現に置き換えて返します。 –

+0

あなたはそれを解決するのを助けることができますか? –

関連する問題