Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

08.09.2007, 12:36

C++ Code Untersucher :-)

Mir ist gerade etwas eingefallen.
Gibt es Programme, die C++ Code untersuchen können?

Zum Beispiel:
- ob Header eingebunden sind, die garnicht gebraucht werden.
- ob mehrfacheinbindung von Headern geschrieben wurden.
- ob gefärhliche Dinge, wie

C-/C++-Quelltext

1
2
Typ *Objekt = 0;
Objekt->Methode();

im Quellcode stehen.
- oder sonstige typische Fehler, sinnloser oder Bug-Gefährdeter Code zu finden ist...
?

Die meisten Compiler machen ja ansatzweise so etwas... aber eben nur ansatzweise.

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

2

08.09.2007, 13:02

sowas ist sache der Compiler und das meiste kann mit dem eingestellten (hohen) Warnlevel gefunden werden.

Ausserdem schreibt man in der professionellen Softwareentwicklung sogenannte Testklassen mit diversen Testframeworks, die solche Semantischen Fehler meist besser finden als es so eine applikation je machen könnte.

3

08.09.2007, 13:18

Ich weiß, so mache ich das ja auch...
Ich kenne aber trotzdem keinen Compiler der die ersten 3 Stichpunkte entdecken kann...

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

4

08.09.2007, 13:25

Re: C++ Code Untersucher :-)

Zitat von »"tobb"«

Mir ist gerade etwas eingefallen.
Gibt es Programme, die C++ Code untersuchen können?

Zum Beispiel:
- ob Header eingebunden sind, die garnicht gebraucht werden.
- ob mehrfacheinbindung von Headern geschrieben wurden.
- ob gefärhliche Dinge, wie

C-/C++-Quelltext

1
2
Typ *Objekt = 0;
Objekt->Methode();

im Quellcode stehen.
- oder sonstige typische Fehler, sinnloser oder Bug-Gefährdeter Code zu finden ist...
?

Die meisten Compiler machen ja ansatzweise so etwas... aber eben nur ansatzweise.


1. Was nicht gebraucht wird wird glaub ich wegoptimiert - stell dir mal vor, der Compiler würde immer bei der Arbeit mit StdLib oder WinAPI oder sonstwas rummeckern, nur weil irgendwo in den Tiefen der Includestrukturen was nicht gebraucht wird :shock:
2. Mehrfacheinbindungen werden nur dann nicht bemängelt, wenn entweder Includeguards (btw. #pragma once) existieren oder sowieso nur deklarationen da stehen - wozu soll man das also testen?
3. Wenn Typ::Methode irgendwas sinnvolles macht dann kriegste spätestens bei der Ausführung in VC++ eine Exception um die Ohren gehaun

Also, wo is das Problem?

5

08.09.2007, 14:00

1. Weil der Code dann übersichtlicher wird. Wenn man 20 inlcudes einfügt und 5 davon garnicht mehr gebraucht werden, dann ist es doch ganz hilfreich, wenn man weiß, was weg kann und was nicht. Die kompillationszeit wird kürzer... etc
Ich glaube kaum, dass es wegoptimiert wird. Das müsste dann der Präprozessor-Optimierer mache und den gibt es, glaube ich, nicht.

2. Es ist meistens ein Zeichen von falschen Quellcode Design wenn zig Mehrfacheinbindungen vorliegen. Sie zu kennen, wäre mal ganz hübsch.

3. Hier ging es darum, dass über einen Null Pointer eine Methode aufgerufen wird. Code der nur extrem selten ausgeführt wird, bleibt daher unentdeckt, wenn man ihn während der Laufzeit abstürzen lassen will...
Un Compiler entdecken so etwas leider auch nicht...

Es gibt bestimmt noch einige Punkte mehr...

Außerdem war meine Frage, ob es so etwas gibt. Mehr nicht.

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

6

08.09.2007, 14:17

deswegen testet man ja... :roll:

Wenn wir das alles Maschinen überlassen würden oder besser: könnten wären auch schnell alle Softwareentwickler arbeitslos.

Ich bin sicher das man eine solche Software bauen könnte, aber es wäre zum einen nicht ganz einfach und zum zeiten brächte man immernoch den Softwareentwickler der drüberschaut.

Mir ist kein Programm bekannt das dies zuverlässig prüfen könnte und ich glaub auch so etwas wird es nie geben.
Einen echten Sinn sehe ich da eh nicht drin, wir entwickeln software ja nicht weil der Quellcode schön aussehen soll.

7

08.09.2007, 16:14

http://en.wikipedia.org/wiki/Flawfinder
http://en.wikipedia.org/wiki/Rough_Auditing_Tool_for_Security
ansatzweise so etwas, dass ich suche...

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

8

08.09.2007, 16:24

Die scheinen ja voll eingeschlagen zu haben ... Ich hab schon lange nix mehr von Sicherheitslücken in OS Software (oder auch anderer) gehört :roll:

Mal im Ernst: So Tools sind ja schön und gut, aber bei vielen Compilern schon Standard ;) Besonders die Sache mit den Includes (wie ja auch schon erwähnt worden ist).

Und die Fehler die du da genannt hast sollten ja wohl jedem schneller auffallen. Die wirklich gefährlichen Lücken sind nicht semantischer oder syntaktischer, sondern logischer Natur. Und da hilft dir auch kein Tool.

9

08.09.2007, 16:28

Ich drucke mir des öfteren meinen Quellcode aus und schaue ihn komplett durch.
Dabei streiche ich meistens einige Includes, ein paar Funktionen, die ich gar nicht mehr brauche und nur nicht gelöscht habe usw...
lol warum kriege ich hier so eine starke anti-haltung zu spüren ;-)
die software die ich suche tut doch nichts böses... :-P

Oder sowas hier habe ich letztens gefunden

C-/C++-Quelltext

1
2
3
4
//...

#include "tE_Graphics.h"
//viele andere includes

#include "tE_Graphics.h"

Das sind so Schmuddelfehler, die nichts bewirken, aber einfach nicht schön aussehen.
Wer OpenSource programmiert, der will doch auch einigermaßen ordentlichen Code veröffnetlichen ;-)

Sheddex

unregistriert

10

08.09.2007, 16:45

Das ist ein Anfängerfehler. Code von Anfängern sieht meistens nicht wirklich schön aus...

Man sollte wissen, was man programmiert hat und was wo steht, dann passiert so etwas auch nicht...

Das Tool, welches man dafür benötigt, nennt sich Erfahrung.

Werbeanzeige