plugin - java code style




Comment désactiver le formateur de code Eclipse pour certaines sections du code Java? (8)

@xpmatteo a la réponse à la désactivation des portions de code, mais en plus de cela, les paramètres d'éclipse par défaut doivent être définis pour ne formater que les lignes de code éditées au lieu du fichier entier.

Preferences->Java->Editor->Save Actions->Format Source Code->Format Edited Lines

Cela aurait empêché que cela se produise en premier lieu puisque vos collègues reformatent le code qu'ils n'ont pas réellement changé. C'est une bonne pratique pour éviter les problèmes qui rendent le contrôle diff sur votre source inutilisable (lorsqu'un fichier entier est reformaté en raison de différences mineures de réglage de format).

Cela empêcherait également le reformatage si l'option on / off tags était désactivée.

J'ai du code Java avec des instructions SQL écrites en tant que chaînes Java (s'il vous plaît pas de OR / M flamewars, le SQL embarqué est ce qu'il est - pas ma décision).

J'ai décomposé sémantiquement les instructions SQL en plusieurs chaînes concaténées sur plusieurs lignes de code pour faciliter la maintenance. Donc, au lieu de quelque chose comme:

String query = "SELECT FOO, BAR, BAZ FROM ABC WHERE BAR > 4";

J'ai quelque chose comme:

String query =
    "SELECT FOO, BAR, BAZ" +
    "  FROM ABC          " +
    " WHERE BAR > 4      ";

Ce style rend le SQL beaucoup plus facile à lire et à maintenir (IMHO), en particulier pour les requêtes plus volumineuses. Par exemple, je peux mettre mon éditeur en mode "overwrite" et modifier le texte sur place assez facilement.

Notez que ce problème généralise au-delà de l'exemple particulier de SQL. Tout code écrit avec une mise en forme verticale, en particulier des constructions tabulaires, est susceptible d'être détruit par une jolie imprimante.

Maintenant, certains membres du projet utilisent l'éditeur Eclipse et la mise en forme sémantique est souvent détruite lorsqu'ils formatent un fichier source entier.

Existe-t-il un moyen d'indiquer à Eclipse d'ignorer certaines lignes de source en ce qui concerne le formatage?

Je cherche quelque chose comme un commentaire spécial qui permute le formateur Eclipse. Idéalement, un tel commentaire pourrait être configurable pour être ce que nous choisissons, et d'autres formateurs pourraient être programmés pour le respecter aussi:

// STOP-ECLIPSE-FORMATTING
String query =
    "SELECT FOO, BAR, BAZ" +
    "  FROM ABC          " +
    " WHERE BAR > 4      ";
// START-ECLIPSE-FORMATTING

Évidemment, une "solution" consiste à faire en sorte que les membres de notre équipe utilisent un formateur externe comme Jalopy ou JIndent , mais ce n'est pas ce que cette question concerne (aussi, pas ma décision sur ce projet): Je cherche spécifiquement évitez le formateur Eclipse sur une base ad-hoc.

Idéalement, une solution me permettra d'insérer des instructions pour le formateur Eclipse sans exiger que les membres de l'équipe utilisant Eclipse fassent une reconfiguration IDE (autre que de choisir éventuellement un commentaire de commande agnostic de formateur: STOP-ECLIPSE-FORMATTINGSTOP-FORMATTING ).


AFAIK d'Eclipse 3.5 M4 sur le formateur a une option "Never Join Lines" qui préserve les ruptures de lignes utilisateur. Peut-être que cela fait ce que vous voulez.

Sinon, il y a ce hack laid

String query = //
    "SELECT FOO, BAR, BAZ" + //
    "  FROM ABC"           + //
    " WHERE BAR > 4";

Ce hack fonctionne:

String x = "s" + //Formatter Hack
    "a" + //
    "c" + //
    "d";

Je suggère de ne pas utiliser le formateur. Mauvais code devrait sembler mauvais artificiellement bon. Un bon code prend du temps. Vous ne pouvez pas tricher sur la qualité. Le formatage fait partie de la qualité du code source.


Eclipse 3.6 vous permet de désactiver la mise en forme en plaçant un commentaire spécial, comme

// @formatter:off
...
// @formatter:on

Les fonctionnalités on / off doivent être activées dans les préférences Eclipse: Java > Style de code > Formatter . Cliquez sur Modifier , Etiquettes Off / On , activez Activer les étiquettes Off / On .

Il est également possible de modifier les chaînes magiques dans les préférences - consultez les documents Eclipse 3.6 ici .

Plus d'information

Java > Style de code > Formatter > Modifier > Etiquettes Off / On

Cette préférence vous permet de définir une étiquette à désactiver et une étiquette pour activer le formateur (voir l'onglet Etiquettes Off / On dans votre profil de formatage):

Vous devez également activer les indicateurs du formatage Java


Les commentaires fantômes, en ajoutant // où vous voulez de nouvelles lignes, sont super!

  1. Le @formatter: off ajoute une référence du code à l'éditeur. Le code devrait, à mon avis, ne jamais avoir de telles références.

  2. Les commentaires fantômes (//) fonctionneront quel que soit l'outil de formatage utilisé. Indépendamment de Eclipse ou InteliJ ou de n'importe quel éditeur que vous utilisez. Cela fonctionne même avec le très bon format Java de Java

  3. Les commentaires fantômes (//) fonctionneront partout dans votre application. Si vous aussi avez Javascript et utilisez quelque chose comme JSBeautifier . Vous pouvez avoir le même style de code dans le Javascript.

  4. En fait, vous voulez probablement le formatage correct? Vous voulez supprimer les espaces tabulation / espace et arrière mixtes. Vous voulez mettre les lignes en retrait conformément à la norme de code. Ce que vous ne voulez pas est une longue ligne. Cela, et seulement cela, est ce que le commentaire fantôme vous donne!


Méthode alternative: Dans Eclipse 3.6, sous "Line Wrapping" puis "General Settings", il y a une option "Ne jamais rejoindre les lignes déjà enveloppées". Cela signifie que le formateur va envelopper les longues lignes, mais ne pas annuler tout emballage que vous avez déjà.


Terminez chacune des lignes avec une double barre oblique "//". Cela empêchera Eclipse de les déplacer tous sur la même ligne.


Voir cette réponse sur SO .

Il existe une autre solution que vous pouvez utiliser pour supprimer la mise en forme de commentaires de bloc spécifiques. Utilisez /*- (notez le tiret) au début du commentaire de bloc et la mise en forme ne sera pas affectée si vous formatez le reste du fichier.

/*-
 * Here is a block comment with some very special
 * formatting that I want indent(1) to ignore.
 *
 *    one
 *        two
 *            three
 */

Source: Documentation chez Oracle .





eclipse-formatter