Naming Conventions
-
Hallo alle zusammen,
ich wollte mal fragen, ob jemand ein Tool kennt, mit dem man C Dateien nach Naming Conventions prüfen kann? Es geht um Funktionen, Variablen und alles. Gibt es da irgendwas fertiges, oder etwas, das man dafür missbrauchen könnte?
Ich hab das jetzt mal in die Kategorie gepostet, da ich nicht wusste, wo sonst damit..
Mfg, Martek
-
C kennt keine Naming Conventions oder nur selbst auferlegte. Also, was willst du prüfen? So etwas gab es einnmal in früheren FORTRAN-Compilern mit der Begrenzung auf 8 Stellen für Bezeichner und bei Variablen mit der Typzuweisung ohne Deklaration: Anfangsbuchstabe I ... N = integer, alles andere = real (float). In C gab es einmal die Ungarische Notation, die sich in vielen Dingen der WinApi noch findet. Das war jedoch kein Muss und wird allgemein als überholt angesehen. Lediglich die Einstiegsfunktionen Main, WinMain und DllMain sind noch Pflicht. Du kannst getrost eine Variable Hund nennen und damit eine Katze meinen. Auch kannst du Strukturen, Funktionen und Klassen für Hunde und Katzen jederzeit AffenImZoo nennen.
Du musst dich im eigenen Sourcecode zurecht finden und jeder, der deinen Sourcecode einmal pflegen soll!
-
berniebutt schrieb:
Du musst dich im eigenen Sourcecode zurecht finden und jeder, der deinen Sourcecode einmal pflegen soll!
Das ist doch der eigentliche Kern der Aussage.
Wenn in der Firma oder dem Projekt absolut total unkonventionelle, abgedrehte, seltsame Bezeichnungen üblich sind und alle Entwickler diese verstehen, dann ist das kein ProblemIch denke es gibt viele Stile, aber es gibt sicherlich in den hier verbreiteten Stilarten einige Gemeinsamkeiten, womit ich nicht sagen will dass hier alle den gleichen Programmierstil haben
-
Es gibt ein paar Tools um den Codingstyle automatisiert überprüfen zu lassen. Beim Linux-Kernel ist zB ein checkpatch.pl bei, für so etwas. Das basiert aber glaube ich nur auf einem Haufen Regex. Google hat für ihre Coding-Guidelines auch irgend so ein Script. Aber das dürfte auch nur auf Regex basieren.
Vermutlich können einige (kommerzielle) Staticanalyser solche Checks.
-
@berniebutt:
Manchmal frag ich mich echt, was manche Antworten sollen
Nur weil die Sprache es nicht vorschreibt, heisst das nicht, dass es in C keine Naming Conventions geben kann.Würde die Sprache es vorschreiben, würde der OP wohl kaum ein eigenes Tool brauchen, denn dann würde der Compiler entsprechend beim Übersetzen meckern.
-
Ja, aber es gibt keine "zwanghaften" Guidelines, insofern hat Bernie schon Recht.
Theoretisch kann jeder seine Funktionen und Variablen so nennen wie er will.Das schließt natürlich nicht aus, dass es so etwas wie einen breiten Konsens gibt, nach dem man sich richten kann.
Es gibt also nicht genau die "Naming Conventions" sondern vermutlich weit mehr als nur eine Sammlung derselben...
-
hustbaer schrieb:
@berniebutt:
Manchmal frag ich mich echt, was manche Antworten sollen
Nur weil die Sprache es nicht vorschreibt, heisst das nicht, dass es in C keine Naming Conventions geben kann.Würde die Sprache es vorschreiben, würde der OP wohl kaum ein eigenes Tool brauchen, denn dann würde der Compiler entsprechend beim Übersetzen meckern.
Damit wären wir beim nie endenden Thema 'Programmierstile' angelangt. In einer Firma oder einem Entwicklerteam sollte es durchaus allgemeine Regeln dafür geben. Meinetwegen kann man das auch mit Tools sehr gut unterstützen!
-
Um etwas genauer zu sein.
Ja, ich weiß es keine allgemein gültigen Richtlinien gibt (bin nicht neu in dem Geschäft), sondern ich suche ein Tool um eigen festgelegte Richtlinien zu überprüfen.Das Tool von Google kenne ich bereits und habe es auch schon mit Splint probiert, bin aber nicht zufrieden. Splint funktioniert nur sehr eingeschränkt auf dem Gebiet (soweit ich das gesehen habe) und Google hat ihre Richtlinien in das Programm eingebaut, so dass es sehr umständlich wäre, sie an meine Bedürfnisse anzupassen.
Kennt vielleicht jemand ein Tool, das meinen Ansprüchen genügen würde? Kommerziell oder nicht ist erstmal egal..
-
Vielleicht ist CPP Depend was für dich...
Da kannst du solche abfragen machen wie
SELECT TYPES WHERE IsClass AND ! NameLike "[C|CT]_.*"
Ist ziemlich an SQL angelegt und man kann das ganze scheinbar auch mit der Konsolen Version des Programmes in die Build Umgebung einbauen...
-
berniebutt schrieb:
So etwas gab es einnmal in früheren FORTRAN-Compilern mit der Begrenzung auf 8 Stellen für Bezeichner
Frühe C-Compiler haben zwar mehr erlaubt, aber nur die ersten ca. 7 Zeichen zur Unterscheidung verwendet. Sehr ärgerlich.
-
Im Grunde müsste doch "nur" ein Parser her, der Definitionen von Variablen, Funktionen, Klassen, Enums erkennt und das Naming prüft, oder? Funktionsaufrufe etc. sollten dabei außen vor gelassen werden, da vermutlich auch Biblitoheksaufrufe vorkommen und die wahrscheinlich nicht den Naming-Conventions entsprechen.
-
pumuckl schrieb:
Im Grunde müsste doch "nur" ein Parser her, der Definitionen von Variablen, Funktionen, Klassen, Enums erkennt und das Naming prüft, oder? Funktionsaufrufe etc. sollten dabei außen vor gelassen werden, da vermutlich auch Biblitoheksaufrufe vorkommen und die wahrscheinlich nicht den Naming-Conventions entsprechen.
Ja, das ist richtig. Aber ich habe noch keinen gefunden, den ich für diesen Zweck "missbrauchen" könnte.. Im Moment sieht es so aus, als müsste ich alles selber schreiben, und das würde ein "bisschen" dauern..