[JAVA] So wenden Sie das C-Code-Format über die Befehlszeile an

Wir glauben, dass es wichtig ist, Formatierungsregeln zu definieren und entsprechend zu codieren, insbesondere für Projekte mit mehreren Personen, um die Lesbarkeit Ihres Codes zu verbessern.

Andererseits ist es für jeden Entwickler eine kostspielige Aufgabe, sich die Formatierungsregeln zu merken und den Code entsprechend zu schreiben und zu überprüfen, ob der von anderen Entwicklern geschriebene Code den Formatierungsregeln entspricht, sodass er automatisch erfolgt. Es ist besser, einen Code-Formatierer mit demselben Format zu verwenden.

In Bezug auf den Zeitpunkt und die Methode zum Übergeben des Code-Formatierers: "Die Person, die den Code schreibt, übergibt den Formatierer jedes Mal." "Beim Speichern der Datei automatisch formatieren." "Beim Festschreiben automatisch formatieren." " Es gibt verschiedene Möglichkeiten, z. B. "Formatieren mit Befehlen über die Befehlszeile". Um zu vermeiden, dass das Formatieren vergessen wird, ist es besser, beim Speichern oder Festschreiben automatisch zu formatieren. Dies ist jedoch der Befehl über die Befehlszeile. In einigen Fällen ist es hilfreich, mit formatieren zu können. Aus diesem Grund möchte ich hier (obwohl es gewaltsam zu sein scheint) eine Methode zur Formatierung über die Befehlszeile für C-Sprachen vorstellen.

Eclipse

Eclipse ist eine bekannte integrierte Entwicklungsumgebung. Es wird hauptsächlich zum Entwickeln von Java-Programmen verwendet, kann jedoch zum Einfügen von Programmen in verschiedenen Sprachen verwendet werden, indem ein Plug-In eingefügt wird.

In Eclipse können Sie Formatierungsregeln für den gesamten Arbeitsbereich oder für jedes Projekt festlegen und diese über die GUI formatieren. Sie können sie jedoch auch über die Befehlszeile formatieren.

So formatieren Sie über die Befehlszeile, um die in Ihrem Projekt festgelegten Formatierungsregeln zu befolgen:

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

Wobei $ PROJ_DIR das oberste Verzeichnis des Projekts ist, für das Formatierungsregeln festgelegt sind.

Es scheint, dass derzeit nur Java über die Befehlszeile formatiert werden kann. Wenn Sie beispielsweise ein Plug-In für die C / C ++ - Programmentwicklung namens CDT installiert haben, können Sie den C / C ++ - Code über die GUI formatieren, aber anscheinend können Sie ihn nicht über die Befehlszeile formatieren. Es tut uns leid.

ClangFormat

ClangFormat ist ein Formatierer für C / C ++ / Objective-C / Objective-C ++, der mit Clang geliefert wird. Es kann über die Befehlszeile mit dem Befehl clang-format verwendet werden.

So formatieren Sie beispielsweise mit dem Formatierungsstil von Google:

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

Durch Hinzufügen von -i wird die Originaldatei überschrieben.

Der Nachteil von ClangFormat ist, dass die Installation ziemlich umständlich ist (Sie müssen aus dem LLVM-Quellcode erstellen: Stand März 2014). Das erstellte "Clang-Format" funktioniert jedoch unabhängig voneinander. Wenn Sie es in einem Projekt verwenden, verwendet jeder die von einer Person erstellte Binärdatei, um den Unterschied im Verhalten aufgrund der unterschiedlichen Version des ursprünglichen Quellcodes zu verhindern. Wäre gut.

Artistic Style

(Künstlerischer Stil) [http://astyle.sourceforge.net/] ist ein Code-Formatierungswerkzeug für C / C ++ / C # / Objective-C / Objective-C ++ / Java.

So formatieren Sie beispielsweise C # -Code im Formatstil von Google:

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

Durch Hinzufügen von "--suffix = none" wird die Originaldatei überschrieben.

Eine detaillierte Beschreibung der Befehlszeilenoptionen wird durch Eingabe von "astyle --help" angezeigt.

SublimeAStyleFormatter

Als Frontend von Artistic Style gibt es Sublime AStyle Formatter, ein Plug-In für Sublime Text 2. Informationen hierzu finden Sie unter "Einführung eines Formatierers in Sublime Text 2".

Die Methode zum Anpassen des Verhaltens von Sublime AStyle Formatter ist relativ undokumentiert. Sie können sie jedoch auf der folgenden Seite verstehen.

Unterdrückung der Formatierung

Wenn Sie den Quellcode mit einem Skript usw. verarbeiten, möchten Sie möglicherweise die Formatierung für einen Teil des Quellcodes unterdrücken. In diesem Abschnitt wird die Unterdrückungsmethode für jeden Formatierer beschrieben.

Eclipse

Schließen Sie den Block, für den Sie die Formatierung unterdrücken möchten, mit "// @formatter: off" und "// @formatter: on" ein.

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

Dieses Tag muss jedoch in den Java-Formatierungseinstellungen aktiviert sein.

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

ClangFormat

Schließen Sie den Block, für den Sie die Formatierung unterdrücken möchten, mit "// clang-format off" und "// clang-format on" ein. (Referenz: CLANG-FORMAT STYLE OPTIONS)

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

Es scheint, dass diese Spezifikation ab 3.6 von ClangFormat gültig ist. Ich habe es mit 3.5 versucht und es wurde nicht erkannt.

Artistic Style

Schließen Sie den Block, für den Sie die Formatierung unterdrücken möchten, mit // * INDENT-OFF * und // * INDENT-ON * ein. (Referenz: Artistic Style 2.05)

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

Zusammenfassung

Wir haben Eclipse, ClangFormat und Artistic Style als Werkzeuge zum Formatieren von Dateien über die Befehlszeile eingeführt. Persönlich denke ich, dass es Eclipse ist, wenn Sie mit Java + Eclipse, Clang Format oder Artistic Style entwickeln, wenn Sie in einer anderen C-Sprache als C # entwickeln, und Artistic Style, wenn Sie in C # entwickeln.

Recommended Posts

So wenden Sie das C-Code-Format über die Befehlszeile an
So führen Sie das Kotlin Coroutine-Beispiel über die Befehlszeile aus
So führen Sie eine GIF-Datei über die Linux-Befehlszeile aus (Ubuntu)
So verwenden Sie das Befehlszeilentool "Java" ... So vermeiden Sie das Auftauchen
So rufen Sie Swift 5.3-Code von Objective-C auf
[Flattern] Wie verwende ich C / C ++ von Dart?
Verwenden von JUnit über die Befehlszeile unter Ubuntu
Herunterladen und Ausführen des Jar-Pakets direkt aus dem Maven-Repository mit nur der Befehlszeile
[IntelliJ IDEA] Formatieren nur lokaler Änderungen beim Speichern des Quellcodes
So ermitteln Sie das Datum aus dem Datumstyp von JavaScript, von dem C # -Entwickler abhängig sind
Wie schreibe ich Scala aus der Perspektive von Java
So ermitteln Sie die Prefetch-Anforderung (Prefetch) im Browser
Hinweise zum Aktualisieren von Ubuntu über die Befehlszeile (16.04 → 18.04, 18.04 → 20.04 beide)
So legen Sie mit JAXB Zeichencode und Zeilenvorschubcode fest
Wie man guten Code schreibt
So erstellen Sie ein Formular zur Auswahl eines Datums aus dem Kalender
So legen Sie den Zeichencode und den Zeilenvorschubcode in Eclipse fest
So erhalten Sie die längsten Informationen von Twitter ab dem 12.12.2016
So deaktivieren Sie Set-Cookie über die API auf der Vorderseite
[Integrationstestcode] So wählen Sie ein Element aus date_select aus
[Docker] Zugriff auf den Host aus dem Container heraus. http: //host.docker.internal:
So erstellen Sie eine JAR-Datei und eine War-Datei mit dem Befehl jar
Installieren Sie lsb_release über die Befehlszeile, wenn lsb_release in der Docker-Umgebung fehlschlägt
[Für Anfänger] So erhalten Sie den Namen der Ruby-Eisenbahnlinie
[Java] So konvertieren Sie vom Typ String in den Pfadtyp und erhalten den Pfad
So erhöhen Sie den Wert von Map in einer Zeile in Java
Verwendung der link_to-Methode
Verwendung der include? -Methode
Verwendung der Methode form_with
So finden Sie den durchschnittlichen Winkel
Verwendung der Wrapper-Klasse
Wechseln Sie von Eclipse zu VS Code
So schreiben Sie leicht verständlichen Code [Zusammenfassung 3]
So fügen Sie die Löschfunktion hinzu
Der Weg von JavaScript nach Java
So wechseln Sie von HTML zu Haml
So schränken Sie das Bildformat in der Galerie unter Android ein und wählen und importieren Sie dann mehrere Bilder
So platzieren Sie Geckodriver (Seleniums WebDriver) mit dem Befehl Maven auf dem Pfad
So wenden Sie Thymeleaf-Änderungen sofort mit #Spring Boot + maven auf den Browser an
Zurückgeben eines Werts vom Modell an den Controller mithilfe des [Swift5] -Protokolls
[Java] So rufen Sie die von HTML auf der Serverseite übergebenen Parameter ab
So erhalten Sie das aktuelle Datum als Zeichenfolge im Format JJJJMMTT
[Docker] Erstellen, wenn der Quellcode auf dem Container gebunden ist
Wie man nur die Zeit mit Rails vergleicht (von welcher Zeit bis zu welcher Zeit, so etwas wie)
So erhalten Sie den Einstellungswert (Eigenschaftswert) aus der Datenbank in Spring Framework
[Rails] So wenden Sie das in der Hauptanwendung verwendete CSS mit Administrate an
[swift5] So ändern Sie die Farbe der TabBar oder die Farbe des TabBar-Elements mit Code
[Java: Memorandum] Bis der Zeilenvorschubcode CRLF in LF geändert wird
[Java] Verwendung der File-Klasse
Untersuchen Sie den Ersatz von Docker zu Podman.