PasCop - Codeanalyse für Free Pascal

Vorstellungen von Programmen, welche mit Lazarus erstellt wurden.
Antworten
Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

PasCop - Codeanalyse für Free Pascal

Beitrag von m.fuchs »

PasCop ist ein Werkzeug zur statischen Programmanalyse von Object Pascal Quellcodes.
Es hilft, die Prinzipien der Clean Code Entwicklung einzuhalten und unterstützt den Entwickler bei der Erstellung von lesbarem Quellcode.

Merkmale
  • 14 eingebaute Codeartprüfungen
  • CLI-Version enthalten, für den Einsatz in automatisierten Umgebungen
  • Export nach HTML
  • Export nach XML (PMD-kompatibel)
  • kein installierter Compiler erforderlich

Binaries stehen für Windows (32bit) und Linux (64bit) bereit. Ebenso der Quellcode, der unter GPL3 veröffentlicht ist.

Bild

Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
kupferstecher
Beiträge: 418
Registriert: Do 17. Nov 2016, 11:52

Re: PasCop - Codeanalyse für Free Pascal

Beitrag von kupferstecher »

Ich hab mir das mal angeschaut. Installation war problemlos.
Das Einrichten des Projektes fand ich nicht sehr intuitiv, bzw. denke, dass ich das Konzept noch nicht ganz verstanden habe. Es wäre besser, wenn es einen Dialog dafür gäbe, indem man die Dateien auswählt und hinzufügt. Das manuell zu machen ist recht mühsam und man muss sich erst mit dem Format vertraut machen.
Ich hätte (für einen schnellen Test) gerne ein ganzes Verzeichnis verwendet ohne einzelnes Angeben der Dateien. Ich vermute, dass dafür das Feld "Directories" steht. Bei mir kam dann aber eine Fehlermeldung, dass man nur eine Datei angeben könne (sinngemäß). Bei fehlerhafter Formatierung in den Project Settings kam es zu Abstürzen (Access Violation).

In meinem Code wurde allein in einer Datei schon einiges bemängelt, viele "Magic Numbers", zu lange Prozeduren und EXIT Anweisungen. Für die Magic Numbers halte ich eine Überprüfung für recht sinnvoll, jedoch ist es wohl schwierig automatisch zwischen sinnvollen und weniger sinnvollen direkten Zuweisungen zu unterscheiden. Beispielsweise habe ich eine Datei nach Anführungszeichen (") geparst, das Anführungszeichen kommt mehrfach als Magic Number vor. Eine Konstante dafür anzulegen bläst den Code halt auf. Aber da unterscheidet sich dann vielleicht auch der Profi.

Viele Grüße

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: PasCop - Codeanalyse für Free Pascal

Beitrag von wp_xyz »

kupferstecher hat geschrieben:denke, dass ich das Konzept noch nicht ganz verstanden habe.

Das ging mir auch so. Schon allein der Grundbegriff "Projekt" ist mir nicht klar. Ist damit ein FPC/Lazarus-Projekt gemeint, oder eine Zusammenstellung von Einstellungen für PasCop? Welche Aufgabe hat die Eingabezeile "Working directory" wenn ich trotzdem unter "Directories" noch Verzeichnisse hinzufügen muss?

Die Links im 1.Beitrag verweisen übrigens teilweise auf die svn-Observator-Seite.

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: PasCop - Codeanalyse für Free Pascal

Beitrag von compmgmt »

Wie kupferstecher und wp_xyz geht es mir auch. Die Idee dahinter ist super und ich würde es sehr gerne verwenden, steige da aber auch nicht richtig durch. Vielleicht könntest du ja mal ein richtiges Tutorial und/oder Beispielprojekt erstellen.

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: PasCop - Codeanalyse für Free Pascal

Beitrag von m.fuchs »

https://pascop.de/start.html reicht als Tutorial nicht aus? Ich baue auch noch einen Assistenten dazu. Dauert aber noch ein bisschen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: PasCop - Codeanalyse für Free Pascal

Beitrag von MacWomble »

Im Prinzip reicht das schon aus, aber intuitiv ist es wirklich nicht. Auch die Einstellungen sollten über die GUI machbar sein und nicht durch das direkte Editieren der Datei.
Ansonsten ein recht interessantes Projekt mit gutem Ansatz!
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: PasCop - Codeanalyse für Free Pascal

Beitrag von wp_xyz »

m.fuchs hat geschrieben:https://pascop.de/start.html reicht als Tutorial nicht aus?

Nein. Genau das hatte ich schon gefunden, aber brachte nicht wirklich die Erleuchtung:

- "store the configuration next to your project": Wie schon oben erwähnt, welches "Project"? Das Lazarus-Project? Was meinst du mit "next to"? In dem Ordner des Lazarus-Projekts? Oder im Parent-Ordner, also in dem Ordner, in dem sich der Lazarus-Projekt-Ordner befindet?

- "Add the relevant paths ... to the directories node": Was ist "relevant"? Meinst du hier die Unterverzeichnisse meines Pascal-Projekts? Werden diese als absolut oder relativ angegeben? Relativ zu was? Werden alle Source-Dateien in diesen Ordnern geprüft?

- "Use the Files node to add single files...": Oder muss ich die zu prüfenden Dateien jetzt doch noch einzeln eintragen? Wieder: mit absolutem oder relativem Pfad? Relativ zu was?

Ich habe die PasCop-Projekt-Datei im Quelltext-Ordner eines Pascal-Projekts gespeichert, "Directories" zunächst unverändert gelassen, aber später auch den Ordner des Pascal-Projekts eingetragen, und unter "Files" den Namen der Haupt-Unit des Pascal-Projekts eingetragen, zunächst ohne Pfadangabe, später auch mit dem absoluten Pfad, zunächst ohne, später mit Anführungszeichen.

Der Klick auf "Run" bewirkt in jedem Fall eine nicht näher spezifizierte Access Violation. Nach den genannten Variationen hatte ich keine Lust mehr und das Programm beiseite gelegt. Schade.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: PasCop - Codeanalyse für Free Pascal

Beitrag von m.fuchs »

Danke für die Rückmeldungen. Ich bin tatsächlich davon ausgegangen: keine Eile mit dem Assistenten. So eine JSON-Config schreibt sich ja fast von selbst. Der berühmte Unterschied von Fremd- und Eigenwahrnehmung.
Ich baue dann mal einen Assistenten ein und sage dann Bescheid.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Antworten