4

データオブジェクトであるクラスフィールドがあります。checkstyle が「b の書き込みオカレンス」について不平を言うのはなぜですか? また、その意味は何ですか? doSomething1() は常に doSomething() の前に呼び出されます

public class A{
  private B b;
  public void doSomething() {
    if(b!=null) {
      b.setYear(2012);
      b.setDay("Tuesday");
   } 
  }
  public void doSomething1(){
    b = new B();
    b.setDate(new Date());
  }
}
4

4 に答える 4

4

これは Checkstyle からではなく、Eclipse 自体から来ています。

クラスのプロパティを強調表示すると、クラス内でそのプロパティが出現する場所が表示され、右側のスクロール バーにマーカーが表示されます。これらは Checkstyle マーカーのように黄色です。

プロパティが読み取られるインスタンス ("Occurrence of X") と、そのプロパティが書き込まれる可能性があるインスタンス ("Occurrence of X") が強調表示されます (たとえば、パラメーターとしてメソッドに渡す場合)。

メッセージが構成されている場所を確認できますhttp://grepcode.com/file/repository.grepcode.com/java/eclipse.org/3.5.2/org.eclipse.jdt/ui/3.5.2/org/eclipse/ jdt/internal/ui/search/SearchMessages.properties

于 2014-09-11T16:02:44.773 に答える
2

エラーではありません。この現象は、カーソル コンテキストを特定の用語 (この場合は「b」) に置くと発生します。そうすると、コード ウィンドウの右側にある空の灰色のボックスで区切られた、その用語のすべての出現を確認できます。また、タームが変数の場合、データが書き込まれている場所が薄い黄色で表示されます。

これを試してみて、Exception という単語のどこかをクリックすると、淡い灰色の中空のボックスしかないことがわかります。コードで実際の変数を試してみると、グレーのボックスと 1 つ以上の薄い黄色のボックスが表示されるはずです。

私はこの機能を自分で使用したことはありませんが、誰かが価値があると思うかもしれません。

于 2015-10-21T19:02:55.397 に答える
2

私は最近、CheckStyle、FindBugs などについて調査を行いました。

FindBugs ( findbugs.sourceforge.net ) でよくある問題は、FindBugs が「デッド ストア」と呼んでいるものです。これは、値が読み取られず、書き込まれるだけの場合です。この問題でしょうか?

あなたの例は非常に単純化されているようです - 詳細を教えてください。

于 2012-10-23T13:36:25.420 に答える
1

これは独自のカスタム ルールではありませんか? checkstyle http://checkstyle.sourceforge.net/availablechecks.htmlに付属するものの 1 つとは思えません。それが独自のカスタム ルールである場合は、そのカスタム チェックを書いた人に尋ねる必要があります。

ルールは、維持がはるかに簡単な非可変オブジェクト用であるとしか思えません。

于 2012-10-02T19:25:51.813 に答える