2010-04-30 15 views
4

Nous aimerions avoir des accesseurs de propriétés Java triviaux utilisant une syntaxe à une seule ligne, de sorte qu'ils occupent beaucoup moins d'espace et soient plus lisibles (en termes de ' voir 'l'ensemble des accesseurs rapidement). Mais nous voulons appliquer une syntaxe de méthode multiligne pour tout le reste dans notre configuration de checkstyle. Mais je ne suis pas sûr de savoir comment faire cette exception pour les accesseurs dans Checkstyle config et je suppose que ce n'est pas possible.Autoriser la syntaxe de l'accesseur (getter/setter) sur une seule ligne avec Checkstyle

Nous aimerions donc que nos accesseurs pour ressembler à ceci:

public String getFoo() { return foo; } 
public void setFoo(String foo) { this.foo = foo; } 

[En fait, nous préférerions ne accesseurs triviales du tout et au lieu simplement annoter les variables membres privées avec @Property ou quelque chose et avoir les accesseurs générés pour nous, car l'écriture sans fin get et set code n'apporte aucun avantage réel, mais c'est une frustration générale de Java et un aparté autant que cette question va.]

+1

Je suppose que vous avez vu le projet Lombok pour répondre au dernier paragraphe ... –

+0

ou au printemps roo, d'ailleurs –

+0

Je préférerais résoudre cela en utilisant le formateur de code automatique. Ensuite, les développeurs n'auraient pas à y penser. –

Répondre

-1

Je recommanderais d'utiliser le SuppressionCommentFilter pour désactiver les contrôles Checkstyle pour un bloc de code.

Il serait alors possible de faire ce qui suit pour désactiver Checkstyle comme ce qui suit:

// CHECKSTYLE_OFF: ALL 
public String getFoo() { return foo; } 
public void setFoo(String foo) { this.foo = foo; } 
// CHECKSTYLE_ON: ALL 
+0

L'inconvénient est que si un jour l'un des accesseurs devient non trivial, checkstyle continuera à l'ignorer. –

0

Si vous voulez résoudre cela en utilisant Checkstyle, alors vous devez écrire un ou plusieurs contrôles personnalisés. Votre chèque serait une sous-classe du chèque que vous modifiez. Ensuite, pour toutes les vérifications concernées, vous devez entrer votre propre chèque sous-classé dans la configuration de Checkstyle (et supprimer l'original).

Vous pouvez cannibaliser du code à partir du JavadocMethodCheck, qui détecte déjà les accesseurs triviaux. Cela ressemble à beaucoup de travail, mais ce n'est pas beaucoup de code parce que la modification que vous faites dans votre sous-classe est toujours la même et peut donc être mis dans une classe d'aide.

Honnêtement, je ne pense pas que Checkstyle peut le faire hors de la boîte, désolé!