Eclipse: Pouvez-vous formater le code lors de l'enregistrement?


124

Dans Eclipse, sous Windows-> Preference-> Java-> Code Style, vous pouvez définir des modèles de code pour les commentaires et le code, et vous pouvez configurer un formateur de code.

Je me demande s'il est possible dans Eclipse que ces paramètres prennent effet à chaque fois que j'enregistre un fichier source. Fondamentalement, au lieu de tout mettre en évidence et d'appuyer sur Ctrl+ Shift+ F, je veux qu'Eclipse soit responsable de s'assurer que mon code est correctement formaté.

Est-ce possible et comment le configurer?

Remarque sur l'utilisation du formatage automatique: il est probablement préférable de choisir «Formater les lignes modifiées» car la fusion des modifications devient très difficile lorsque vous reformatez un fichier entier qui est déjà sous contrôle de code source et qui n'a pas été formaté correctement. Déjà fait cela à un collègue.


4
Excellente question, mais je ne suis pas d'accord avec l'activation de "Formater les lignes éditées". Si toute l'équipe a accès au même format de descripteur XML via SCM, l'équipe doit s'attendre à ce que ses fichiers soient reformatés. En d'autres termes, la douleur à court terme de la fusion vaut l'avantage d'une mise en forme cohérente.
HDave

2
@HDave est d'accord. Le code doit à tout moment être robuste par rapport à une «source de format» sur tous les projets.
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen Si tout le monde utilise ces paramètres, vous pouvez sélectionner "Formater les lignes modifiées". Cela vous fera gagner du temps si vos fichiers sont volumineux. Je suis d'accord avec vous sur la nécessité que le code soit robuste par rapport à un "Format Source", mais ce n'est pas la tâche d'Eclipse de s'assurer que c'est le cas, je pense.
brimborium

@brimborium une décision politique. Personnellement, je crois que plus vous restez proche des paramètres par défaut, plus les choses se dérouleront en douceur.
Thorbjørn Ravn Andersen

1
@ ThorbjørnRavnAndersen Cela signifierait que l'option de formatage automatique est désactivée ...;) Je veux dire, j'enregistre toujours par Ctrl+Shift+Fsuivi de Ctrl+S, donc ça me va, mais il y a d'autres gars qui ne se soucient pas du formatage. Cette fonctionnalité nous rend la vie tellement plus facile ...
brimborium

Réponses:


204

Sous Preferences, choisissez Java-> Editor-> Save Actions. Cochez Perform the selected actions on saveet cochez la Format source codecase.

Cela peut être disponible ou non dans les versions précédentes d'Eclipse. Je sais que cela fonctionne dans:

Version: 3.3.3.r33x_r20080129-_19UEl7Ezk_gXF1kouft<br>
Build id: M20080221-1800

3
Cela semble très utile - y a-t-il un moyen d'obtenir la même chose pour le code PHP?
Vacilando

3
Bien, mais comment faire de même pour les fichiers non Java?
ᆼ ᆺ ᆼ

@ PéterVarga si vous utilisez PyDev, vérifiez ceci
grisaitis

1
Cela semble très utile - y a-t-il un moyen d'obtenir la même chose pour le code C ++?
HAL9000

15

Je recommande fortement de vérifier votre descripteur xml au format eclipse dans le contrôle de code source. De cette façon, tous les membres de l'équipe peuvent l'utiliser et vous ne pouvez pas aller et venir des batailles de reformatage.


Cela peut-il être fait pour que le fichier XML soit installé par défaut?
HDave

12

J'ai un aperçu du décor. Veuillez suivre le chemin:

Dans la Preferencesfenêtre, choisissez Java-> Editor-> Save Actions.

Vérifiez le Perform the selected actions on saveet vérifiez le Format source code box.

entrez la description de l'image ici


2

Si vous constatez que vous n'avez pas de Save Actionspréférence sous Java-> Editor, c'est peut-être parce que vous utilisez une ancienne version d'Eclipse. Dans ce cas, vous pouvez installer le plugin Format on save à partir d' ici .

Ensuite, sous Preferences, choisissez Java-> Format on save. Sélectionnez l' Run Formatoption sousSelect a code formatting action

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.