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 标记一样。

它将突出显示读取属性的实例(“X 的出现”)以及该属性可以写入的实例(“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

我最近对 ​​CheckStyle、FindBugs 等进行了一些研究。

对于 FindBugs (findbugs.sourceforge.net),一个常见的问题是 FindBugs 所说的“死存储”,即从不读取值而只写入值。会不会是这个问题?

您的示例似乎非常简化-您能提供更多详细信息吗?

于 2012-10-23T13:36:25.420 回答
2

这不是错误。当您将光标上下文放在特定术语上时,会发生这种现象,在您的情况下为“b”。当您这样做时,您可以看到该术语的所有出现由代码窗口右侧的空灰色框划分。您还将以淡黄色看到该术语(如果它是一个变量)已写入数据的位置。

试试这个,点击 Exception 这个词的某个地方,你会看到只有浅灰色的空心盒子。现在在您的代码中尝试一个真实变量,您应该会看到灰色框和一个或多个淡黄色框。

我自己从未使用过此功能,但也许有人觉得它很有价值。

于 2015-10-21T19:02:55.397 回答
1

您确定这不是您自己的自定义规则吗?看起来不像 checkstyle 附带的其中之一http://checkstyle.sourceforge.net/availablechecks.html如果这是您自己的自定义规则,您需要询问编写该自定义检查的人。

我只能认为该规则适用于非可变对象,它们更容易维护。

于 2012-10-02T19:25:51.813 回答