Outil de Formatage Java
Qu'est-ce que le Formatage Java?
Le formateur Java réorganise le code Java avec indentation, retours à la ligne et structure cohérents afin de rendre classes, méthodes, blocs, génériques, annotations et flux de contrôle plus lisibles. Il aide pour des extraits copiés, du code généré, la préparation de revue, des exemples pédagogiques et des fichiers rendus incohérents par différents éditeurs. Le formatage améliore lisibilité et collaboration, mais ne corrige pas la logique, les erreurs de compilation, imports manquants, mauvais usages d’API ni règles de style propres au projet. Dans un dépôt de production, il faut comparer le résultat avec le formatter d’équipe, le build ou la CI afin d’éviter du bruit inutile.
Guide d'utilisation
Comment utiliser
- Collez ou saisissez du code Java dans le champ de saisie de gauche
- Sélectionnez la taille de l'indentation (2 espaces, 4 espaces ou Tab)
- Cliquez sur « Formater » pour embellir le code, ou « Minifier » pour compresser
- Consultez le résultat à droite (avec coloration syntaxique)
- Cliquez sur « Copier » pour copier dans le presse-papiers
Description des options
Conseils de code
- Le formatage améliore la lisibilité mais ne compile ni ne vérifie les types du code Java ; lancez votre build ou vos vérifications IDE habituelles après modification.
- Minifier du code Java source est rarement utile pour la production ; conservez un formatage lisible pour les revues, les traces de pile et la maintenance future.
Cas d’utilisation
Principe technique
Le formatage Java repose sur l'analyse lexicale et la construction d'un AST. L'analyseur lexical scanne le source caractère par caractère et produit des jetons : mots-clés (class, public, static et les autres mots réservés), identifiants (noms de variables et de classes), littéraux (nombres, chaînes, caractères), opérateurs (+, -, ==, &&, ...), séparateurs ({ } ( ) ; ,) et commentaires (//, /* */). L'analyseur syntaxique transforme le flux de jetons en un arbre syntaxique abstrait (AST) conformément à la spécification du langage Java, reconnaissant les définitions de classes, les corps de méthodes, les blocs d'instructions, les structures de contrôle, les annotations et autres unités syntaxiques. Le formateur parcourt l'AST et régénère le code selon un guide de style tel que Google Java Style : l'indentation augmente avec la profondeur des blocs, la largeur de ligne est limitée à 100 colonnes, les opérateurs reçoivent des espaces de chaque côté, les virgules sont suivies d'une espace, et les accolades ouvrantes restent sur la même ligne (style K&R). La gestion des annotations est un cas particulier du formatage Java : une annotation unique reste sur la même ligne que la méthode ; les listes d'annotations plus longues sont réparties sur plusieurs lignes alignées sur les paramètres, chaque annotation occupant sa propre ligne.
- Analyse lexicale : reconnaître les 50 mots-clés Java, les identifiants, les littéraux, les opérateurs et les commentaires, et produire un flux de jetons.
- Construction de l'AST : construire l'AST selon les règles JLS, en gérant correctement les classes, les méthodes, le contrôle de flux, les lambdas et le try-with-resources.
- Règles d'indentation : le style Google utilise 4 espaces par niveau par défaut, avec une largeur de ligne de 100 colonnes ; les lignes dépassant la limite sont automatiquement coupées.
- Stratégie de retour à la ligne : les chaînes de méthodes longues, les listes de paramètres et les annotations sont coupées sur les virgules ou les points, les lignes de continuation étant alignées sur le premier caractère de la ligne précédente.
- Gestion des annotations : une annotation unique reste sur la même ligne ; les annotations multiples peuvent être sur une seule ligne ou une par ligne, selon la longueur et les règles d'alignement des paramètres.
- Préservation des commentaires : conserver les commentaires // et /* */ à leurs positions d'origine ; la suppression est une option lors de la minification.
Exemples
Formatage d'une définition de classe
Entrée : public class User{private Long id;private String name;public User(Long id,String name){this.id=id;this.name=name;}}
Sortie :
public class User {
private Long id;
private String name;
public User(Long id, String name) {
this.id = id;
this.name = name;
}
}Formatage d'une chaîne de méthodes
Entrée : List<String> result=list.stream().filter(s->s.startsWith("a")).map(String::toUpperCase).sorted().collect(Collectors.toList());
Sortie :
List<String> result = list.stream()
.filter(s -> s.startsWith("a"))
.map(String::toUpperCase)
.sorted()
.collect(Collectors.toList());Retour à la ligne des annotations
Entrée : @Override public ResponseEntity<User> getUser(@PathVariable Long id,@RequestParam(defaultValue="10") int size){...}
Sortie :
@Override
public ResponseEntity<User> getUser(
@PathVariable Long id,
@RequestParam(defaultValue = "10") int size) {
...
}FAQ
Quel style Java utilise-t-il ?
Les valeurs par défaut courantes sont le Google Java Style ou les conventions Sun/Oracle : indentation de 4 espaces, style d'accolades K&R, largeur de ligne de 100 colonnes. Certaines builds exposent des options pour changer de style. Les règles exactes de tout guide de style sont subtiles : exécutez le formateur, lisez la sortie et verrouillez une configuration.
Le formateur comprend-il le Java moderne ?
Cela dépend de la version du parseur. Records, classes scellées, expressions switch, blocs de texte et pattern matching sont des ajouts récents ; les parseurs plus anciens peuvent ne pas les gérer. Essayez un extrait : s'il se formate proprement, c'est bon ; s'il échoue, vérifiez la version du parseur.
Va-t-il corriger les imports ou les variables inutilisées ?
Non. Le formatage modifie uniquement les espaces et le placement des accolades. L'analyse statique (organiser les imports, supprimer les inutilisés) nécessite un véritable IDE ou un outil comme google-java-format avec --skip-removing-unused-imports désactivé.
Mon code source est-il téléchargé ?
Non. Le formatage s'exécute dans votre navigateur via un parseur Java basé sur JS. Le code n'est pas transmis. Évitez de coller du code propriétaire si votre politique de sécurité interdit toute exposition à un outil web.
Va-t-il correspondre à ce que produisent IntelliJ ou Eclipse ?
Probablement pas exactement. Chaque IDE a son propre formateur avec des milliers d'options. Utilisez ceci pour un formatage ad hoc ; pour la cohérence d'équipe, utilisez un outil appliqué par CI comme google-java-format ou Spotless intégré à votre build.
Peut-il minifier du Java ?
Java est un langage compilé : la minification ne s'applique pas comme en JS. L'optimisation des fichiers de classe est ce que les compilateurs et ProGuard font au moment de la build. Cette page concerne uniquement le formatage au niveau du code source.
Pourquoi mon code a-t-il des lignes vides supplémentaires ajoutées ?
De nombreux guides de style exigent une ligne vide entre les membres de classe ou entre les méthodes. Le formateur les insère pour se conformer. Si vous préférez un code compact, surchargez les options de style pertinentes.