[JAVA] Comment appliquer le format de code C à partir de la ligne de commande

Nous pensons qu'il est important de définir les règles de formatage et le codage en conséquence, en particulier pour les projets à plusieurs personnes, afin d'améliorer la lisibilité de votre code.

En revanche, c'est une tâche coûteuse pour chaque développeur de se souvenir des règles de formatage et d'écrire le code en fonction de celles-ci, et de vérifier si le code écrit par d'autres développeurs suit les règles de formatage, donc c'est automatique. Il est préférable d'utiliser un formateur de code qui aligne les formats.

En ce qui concerne le moment et la méthode de transmission du formateur de code, "La personne qui écrit le code passe le formateur à chaque fois" "Défini pour être automatiquement formaté lors de l'enregistrement du fichier" "Défini pour être automatiquement formaté lors de la validation" " Il existe différentes possibilités telles que le "formatage à l'aide des commandes de la ligne de commande", et pour éviter d'oublier de formater, il est préférable de formater automatiquement au moment de l'enregistrement ou de la validation, mais c'est la commande depuis la ligne de commande. Dans certains cas, il est utile de pouvoir formater en utilisant. C'est pourquoi (bien que cela semble forcé), je voudrais introduire une méthode de formatage à partir de la ligne de commande pour les langages C.

Eclipse

Eclipse est un environnement de développement intégré bien connu. Il est principalement utilisé pour développer des programmes Java, mais il peut être utilisé pour développer des programmes dans différents langages en insérant un plug-in.

Dans Eclipse, vous pouvez définir des règles de formatage pour tout l'espace de travail ou pour chaque projet, et vous pouvez les formater sur l'interface graphique, mais en fait, vous pouvez également les formater à partir de la ligne de commande.

Pour formater à partir de la ligne de commande pour suivre les règles de mise en forme définies dans votre projet:

$ eclipse -nosplash -application org.eclipse.jdt.core.JavaCodeFormatter -config $PROJ_DIR/.settings/org.eclipse.jdt.core.prefs Hoe.java Fuga.java

$ PROJ_DIR est le répertoire supérieur du projet où les règles de formatage sont définies.

Il semble que seul Java puisse être formaté à partir de la ligne de commande pour le moment. Par exemple, si vous avez installé un plug-in pour le développement de programmes C / C ++ appelé CDT, vous pouvez formater le code C / C ++ à partir de l'interface graphique, mais il semble que vous ne pouvez pas le formater à partir de la ligne de commande. Pardon.

ClangFormat

ClangFormat est un formateur pour C / C ++ / Objective-C / Objective-C ++ fourni avec clang. Il peut être utilisé à partir de la ligne de commande en utilisant la commande clang-format.

Par exemple, pour formater avec le style de format de Google:

$ clang-format -i -style=google Hoe.h Hoe.cpp

L'ajout de -i écrasera le fichier d'origine.

L'inconvénient de ClangFormat est qu'il est assez lourd à installer (vous devez construire à partir du code source LLVM: à partir de mars 2014). Cependant, le clang-format construit fonctionne indépendamment, donc lors de son utilisation dans un projet, tout le monde utilise le binaire construit par une personne pour éviter la différence de comportement due à la différence dans la version du code source d'origine. Serait bon.

Artistic Style

(Artistic Style) [http://astyle.sourceforge.net/] est un outil de formatage de code pour C / C ++ / C # / Objective-C / Objective-C ++ / Java.

Par exemple, pour mettre en forme le code C # dans le style de format de Google:

$ astyle --style=google --mode=cs --suffix=none Hoe.cs Fuga.cs

L'ajout de --suffix = none écrasera le fichier d'origine.

ʻA style --help` vous donnera une description détaillée des options de ligne de commande.

SublimeAStyleFormatter

En tant que frontal de Artistic Style, il existe Sublime AStyle Formatter qui est un plug-in pour Sublime Text 2. Pour cela, reportez-vous à "Présentation d'un formateur à Sublime Text 2".

La méthode de personnalisation du comportement de Sublime AStyle Formatter est relativement peu documentée, mais vous pouvez la comprendre en regardant la page suivante.

Suppression du formatage

Lors du traitement du code source avec un script, etc., vous souhaiterez peut-être supprimer le formatage pour une partie du code source. Cette section décrit la méthode de suppression pour chaque formateur.

Eclipse

Entourez le bloc dont vous souhaitez supprimer la mise en forme avec // @formatter: off et // @formatter: on.

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

Cependant, cette balise doit être activée dans les paramètres du formateur Java.

スクリーンショット 2015-02-06 12.16.09.png

ClangFormat

Placez le bloc pour lequel vous souhaitez supprimer le formatage avec // clang-format off et // clang-format on. (Référence: OPTIONS DE STYLE CLANG-FORMAT)

// clang-format off
...
// clang-format on

Il semble que cette spécification soit valide à partir de la version 3.6 de ClangFormat. Je l'ai essayé avec 3,5 et il n'a pas été reconnu.

Artistic Style

Entourez le bloc pour lequel vous souhaitez supprimer le formatage avec // * INDENT-OFF * et // * INDENT-ON *. (Référence: Artistic Style 2.05)

// clang-format off
...
// clang-format on

Résumé

Nous avons introduit Eclipse, ClangFormat et Artistic Style comme outils de formatage de fichiers à partir de la ligne de commande. Personnellement, je pense que c'est Eclipse si vous développez avec Java + Eclipse, Clang Format ou Artistic Style si vous développez dans un langage C autre que C #, et Artistic Style si vous développez en C #.

Recommended Posts

Comment appliquer le format de code C à partir de la ligne de commande
Comment exécuter l'exemple Kotlin Coroutine à partir de la ligne de commande
Comment exécuter un fichier GIF à partir de la ligne de commande Linux (Ubuntu)
Pour utiliser l'outil de ligne de commande "java" ... Comment éviter d'apparaître
Comment appeler le code Swift 5.3 depuis Objective-C
[Flutter] Comment utiliser C / C ++ depuis Dart?
Utilisation de JUnit à partir de la ligne de commande sur Ubuntu
Comment télécharger et exécuter le package Jar directement à partir du référentiel Maven avec juste la ligne de commande
[IntelliJ IDEA] Comment formater uniquement les modifications locales lors de l'enregistrement du code source
Comment obtenir la date du type Date de JavaScript auquel les développeurs C # sont accros
Comment écrire Scala du point de vue de Java
Comment déterminer la demande de prélecture depuis le navigateur
Notes sur la mise à jour d'Ubuntu à partir de la ligne de commande (16.04 → 18.04, 18.04 → 20.04 les deux)
Comment spécifier le code de caractère et le code de saut de ligne avec JAXB
Comment écrire du bon code
Comment créer un formulaire pour sélectionner une date dans le calendrier
Comment définir le code de caractère et le code de saut de ligne dans Eclipse
Comment obtenir les informations les plus longues de Twitter à partir du 12/12/2016
Comment désactiver Set-Cookie de l'API sur la face avant
[Code de test d'intégration] Comment sélectionner un élément dans date_select
[Docker] Comment accéder à l'hôte depuis l'intérieur du conteneur. http: //host.docker.internal:
Comment créer un fichier jar et un fichier war à l'aide de la commande jar
Installez lsb_release à partir de la ligne de commande lorsque lsb_release échoue dans l'environnement docker
[Pour les débutants] Comment obtenir le nom de la ligne de chemin de fer différée Ruby
[Java] Comment convertir du type String en type Path et obtenir le chemin
Comment incrémenter la valeur de Map sur une ligne en Java
Comment utiliser la méthode link_to
Comment utiliser la méthode include?
Comment utiliser la méthode form_with
Comment trouver l'angle moyen
Comment utiliser la classe wrapper
Passer d'Eclipse à VS Code
Comment rédiger un code facile à comprendre [Résumé 3]
Comment ajouter la fonction de suppression
La route de JavaScript à Java
Comment passer du HTML à Haml
Comment affiner le format d'image de la galerie sur Android, puis sélectionner et importer plusieurs images
Comment placer geckodriver (WebDriver de Selenium) sur le chemin à l'aide de la commande Maven
Comment appliquer immédiatement les modifications de Thymeleaf au navigateur avec #Spring Boot + maven
Comment renvoyer une valeur du modèle au contrôleur en utilisant le protocole [Swift5]
[Java] Comment récupérer les paramètres passés du html côté serveur
Comment obtenir la date actuelle sous forme de chaîne au format aaaaMMjj
[Docker] Comment créer lorsque le code source est monté en liaison sur le conteneur
Comment comparer uniquement le temps avec Rails (de quelle heure à quelle heure, quelque chose comme)
Comment obtenir la valeur du paramètre (valeur de la propriété) à partir de la base de données dans Spring Framework
[Rails] Comment appliquer le CSS utilisé dans l'application principale avec Administrer
[swift5] Comment changer la couleur de TabBar ou la couleur de l'élément de TabBar avec le code
[Java: Memorandum] Jusqu'à ce que le code de saut de ligne CRLF soit changé en LF
[Java] Comment utiliser la classe File
Examinez le remplacement de Docker vers Podman.