Clang Integration in andere Tools



  • Hi 🙂
    Ich bin komplett neu in diesem Bereich und wäre deshalb dankbar für Eure Hilfe!

    Wie kann ich in all diesen drei Umgebungen (TI Code Composer, Eclipse IDE, ARM Keil) Clang starten und die jeweilige Umgebung mit der Quelldatei versorgen, damit ich eine einheitliche Formatierung bekomme?
    Es soll automatisch passieren und nicht händisch.
    Es soll eine Sprachkonstruktion geben, die alle Dateien in einem Verzeichnis durchscannt und korrigiert. Ist das möglich?

    Welche Möglichkeiten gibt es und wie sehen diese aus?

    Vielen Dank für Eure Hilfe! 🙂



  • Ich benutze jetzt persönlich nicht diese 3 Umgebungen, aber es klingt so als würdest du nach
    https://clang.llvm.org/docs/ClangFormat.html suchen.

    Wenn du Glück hast gibt es ein passendes Plugin und die IDE hat so eine Funktion wie "Format on save". Im ungünstigen Fall brauchst du eine andere Lösung, z.B. manuelles ausführen des Tools. Je nachdem, was du sonst noch so verwendest, kannst du natürlich auch Git Hooks nutzen etc.

    Edit: Wenn du einmalig alle Dateien formattieren willst, dann bietet sich ggf. auch ein Python 3 Zeiler an, um das ganze entsprechend mit ClangFormat zu machen -> Rekursiv Ordner durchlaufen, Clang Format ausführen



  • Hi @Leon0402 🙂
    Danke für deine Rückmeldung.
    Den Link von Clang habe ich auch schon gefunden. Allerdings kommen die von mir genannten Umgebungen dort nicht wirklich vor.

    Weißt du denn, ob deine Vorschläge funktionieren? 🙂
    Da ich wirklich neu in diesem Bereich bin, habe ich keinerlei Erfahrung damit, wie ich dies umzusetzen habe.

    Danke für dein Feedback! Vielleicht könntest du mir weitere Tipps geben. 🙂

    Liebe Grüße



  • clang-format hat erstmal überhaupt nichts mit IDEs zu tun. Es ist ein Kommandozeilentool. Also solches kann es natürlich in IDEs integriert werden. Wie genau hängt von der konkreten IDE ab. Grundsätzlich sucht clang-format im aktuellen Verzeichnis nach einer .clang-format Datei. Wenn dort keine ist, dann wird in den übergeordneten Verzechnissen weitergesucht. In der Datei legst du fest wie was formatiert wird.



  • Die .clang-format Datei habe ich bereits angelegt und meine Formatierung festgelegt.

    Ziel jetzt sollte sein, eine Lösung zu finden, welche die .clang-format Datei unter der jeweiligen Umgebung (sprich: Code Composer, Eclipse, Arm Keil) aufruft und einheitlich, alle Dateien im Verzeichnis formatiert.

    Ist Clang als externes Tool in code composer (u.a.) integrierbar?
    Wenn ja, wie?



  • Vlt. kannst du nochmal kurz erläutern, ob du einmalig alle Dateien formattieren willst oder eher immer, wenn du halt ne Änderung machst.



  • @Leon0402
    Ich denke, Ziel sollte erstmal sein, das komplette Verzeichnis einmalig zu formatieren. Dies sollte am besten automatisch passieren und nicht händisch.

    Oder was meinst du mit "wenn ich eine Änderung mache" ? 🙂

    Die .clang-format Datei ist auf jeden Fall ein endgültiges Produkt erstmal. 🙂



  • Mit "wenn du eine Änderung machst" meine ich: Willst du in Zukunft immer wenn du am Code arbeitest, dass er automatisch das ganze formatiert. Denn nur bei so regelmäßigen Aufgaben lohnt sich eine automatisierung ja überhaupt erst.

    Wenn du das nur einmalig machen willst, dann würde es vermutlich schneller gehen, wenn du halt einfach einmal den Befehl ausführst. Also der Befehl "clang-format" unterstützt ja wildcards. Das würde ich schon relativ nah an automatisiert sehen, nur das du es halt mit einem Befehl im Terminal manuell anstoßen musst.

    Auch ergibt in dem Fall nicht so ganz Sinn wieso du das für alle 3 Umgebungen machen willst. Den Code formattierst du einmal und dann ist es ja schnuppe mit was du denn öffnest (Der Code ist ja nicht in der IDE, sondern auf deiner Festplatte. Die IDE öffnet den ja nur).

    Ich habe aber mal vermutet, dass dein Ziel eig. eher ein "format on save" ist. Daher in Zukunft sobald du deinen Code bearbeitest hast in irgendeiner deiner IDEs möchtest du, dass der automatisch direkt formatiert wird. Oder auch (zusätzlich) "format on paste": Wenn du neuen Code aus dem Internet oder so bei dir reinkopierst, dann wird der automatisch formattiert in deinen Stil. Wenn du aktiv an dem Projekt arbeitest, dann lohnt sich so eine komplett Automatisierung natürlich.
    Letzendes geht es dann aber nur darum, dass eben dieser eine Befehl automatisch von der IDE ausgeführt wird, sobald du z.B. speicherst oder irgendeinen Shortcut drückst. Viele IDEs bieten dafür Plugins an, die direkt clang format einbinden und auf irgendeinen shortcut legen oder so. (z.B: https://marketplace.eclipse.org/content/cppstyle). Viele Editoren bieten auch die Möglichkeit selbst einen Kommandozeilenbefehl zu hinterlegen, der auf eine bestimmte Aktion hin (z.B. speichern) ausgeführt wird. Und wenn das die IDE selbst nicht hat, dann gibt es immer noch so Sachen wie z.B. Git Hooks, wo du eben clang-format ausführen könntest, wenn du einen commit machst.

    Was es konkret für deine IDEs gibt weiß ich nicht. Ich müsste da genauso googeln wie du (oder mal in den Einstellungen gucken, was ich zu "formatter" oder "format on save" etc. finde), da ich keiner der von dir genannten Entwicklungsumgebungen selbst nutze.

    Du solltest aber auch wissen, was du konkret überhaupt haben willst 😉 Deine bisherige Anforderungen sind "Alles sollte einmal komplett formattiert werden" ... dazu brauchst du keine IDE und auch keine Integration. Da führst du sowas wie "clang-format -i *.cpp" in einem Terminal im Root Verzeichnis aus (Keine Ahnung, ob der Befehl so konkret jetzt geht ... müsstest du mal selbst in die Dokumentation gucken)



  • Hi @Leon0402 ! 🙂
    Genau, ich möchte immer, wenn ich am Code arbeite, dass dieser automatisch das ganze formatiert.

    Vorrangig, ist mir das erstmal in den Umgebungen Code Composer (TI) und Eclipse wichtig.

    cppstyle von Eclipse werde ich mir auf jeden Fall dazu ansehen. 🙂 Danke!

    Ich habe dabei eher Probleme bei meiner Recherche nach den möglichen Lösungswegen.



  • Da das "Code Composer Studio (TI)" auf Eclipse basiert, kannst du dort dieselben Plugins benutzen, d.h. wie schon geschrieben z.B. mit CppStyle (welches auf clang-format basiert).



  • Ist es möglich, Clang direkt unter Eclipse oder CCS einzubinden?
    Oder geht dies nur über CppStyle?




Anmelden zum Antworten