2010-11-11 99 views
18

我们的项目包含几个类,我们拥有由Eclipse(右键单击 - >源代码 - >生成hashCode()和equals())生成的equals()和hashCode()方法。如何获取checkstyle以跳过由eclipse生成的equals()和hashcode()方法?

例子:

@Override 
public boolean equals(Object obj) { 
    if (this == obj) 
     return true; 
    if (obj == null) 
     return false; 
    if (getClass() != obj.getClass()) 
     return false; 
    final MyTO other = (MyTO) obj; 
    if (num != other.num) 
     return false; 
    if (name == null) { 
     if (other.name != null) 
      return false; 
    } else if (!name.equals(other.name)) 
     return false; 
    if (table == null) { 
     if (other.table != null) 
      return false; 
    } else if (!table.equals(other.table)) 
     return false; 
    return true; 
} 

这些,对于我们的应用程序工作得很好,但遗憾的是不符合的Checkstyle通过我们的圈复杂度检查方法。由于这些方法是自动生成的,我们不关心它们的复杂性。我们可以从Checkstyle中抑制整个类,但是我们希望能够排除这两种方法。

有谁知道如何在Checkstyle中创建一个自定义规则,这将允许我们以任何方式排除生成的equals()和hashCode()方法,而不排除整个类?

回答

5

您应该设置一个SupressionCommentFilter。更多关于这个here的信息。

有时候有违反支票的正当理由。当这是代码问题而不是个人偏好时,覆盖策略的最佳位置就是代码本身。半结构化评论可以与检查相关联。

+0

我不太熟悉SupressionFilters。如何根据方法名称确定要排除的每个文件的行号? – Brent 2010-11-11 20:01:11

+0

看起来像['SuppressionCommentFilter'](http://checkstyle.sourceforge.net/config.html#SuppressionCommentFilter)(来自同一链接)是需要的。它甚至包括一个排除生成代码的例子。 – matt 2010-11-11 20:01:17

+0

Yup matt,我confused'em :)。在答案中编辑。 Ty – mgv 2010-11-11 20:02:17

相关问题