【问题标题】:Why does checkstyle complain about this?为什么 checkstyle 会抱怨这个?
【发布时间】:2012-10-02 18:21:18
【问题描述】:

我有一个类字段,它是一个数据对象。为什么 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());
  }
}

【问题讨论】:

  • 你有一些时髦的缩进,从来没有在同一行看到与左括号相同的语句,使它看起来更奇怪,因为括号开始一个新行,用样式修复它更标准。

标签: java checkstyle


【解决方案1】:

这不是来自 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

【讨论】:

  • 那是真的......这不是投诉或警告或任何不好的事情。只是 Eclipse 告诉您“嘿,您突出显示的这件事也发生在其他地方”。其他地方是右边的小黄色标记。
    要自己查看,只需突出显示不同的变量...
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-14
        • 2019-12-04
        • 2012-09-12
        • 2015-06-09
        相关资源
        最近更新 更多