2010-11-11 17 views
18

Nuestro proyecto contiene varias clases que tienen métodos equals() y hashCode() generados por Eclipse (clic derecho -> fuente -> generar hashCode() y es igual a()).¿Cómo puedo obtener checkstyle para omitir los métodos equals() y hashcode() generados por eclipse?

Ejemplo:

@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; 
} 

Estos métodos que funcionan bien para nuestra aplicación, pero por desgracia no pasan nuestros cheques complejidad ciclomática con Checkstyle. Dado que estos métodos se generan automáticamente, no nos preocupa su complejidad. Podríamos suprimir toda la clase de Checkstyle, pero preferiríamos poder excluir solo estos dos métodos.

¿Alguien sabe cómo crear una regla personalizada en Checkstyle que nos permita excluir los métodos generados equals() y hashCode() de ninguna manera, sin excluir toda la clase?

Respuesta

5

Debe configurar un SupressionCommentFilter. Más información sobre esto here.

A veces hay razones legítimas para violar un cheque. Cuando se trata de una cuestión de código en cuestión y no de preferencia personal, el mejor lugar para anular la política está en el código mismo. Los comentarios semiestructurados se pueden asociar con el cheque.

+0

No estoy tan familiarizado con SupressionFilters. ¿Cómo puedo determinar qué números de línea excluir para cada archivo según, digamos, el nombre del método? – Brent

+0

Parece que ['SuppressionCommentFilter'] (http://checkstyle.sourceforge.net/config.html#SuppressionCommentFilter) (de ese mismo enlace) es lo que se necesita. Incluso incluye un ejemplo de exclusión de código generado. – matt

+0

Yup matt, i confused'em :). Editado en la respuesta. Ty – mgv

Cuestiones relacionadas