PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie geht man an ein vorhandenes Projekt ran (Quellcode)



ichunddu
06-12-2004, 20:35
Hallo,
ich möchte mich gerne in größere Projekte reinarbeiten. Wenn es nun mal zu einem OpenSource-Projekt keine Informationen gibt (nehme ich mal an), wie arbeitet man sich dann am Besten in ein Projekt rein, wo nur der Quellcode vorhanden ist?
Einfachere Programme (vor allem in C geschrieben, in ein bis zwei oder 3 Dateien aufgeteilt) sind für mich kein Problem, aber hunderte Dateien zu durchforsten und die Beziehungen der einzelnen Dateien herauszufinden gelingt mir nur selten. Könnt ihr mir Ratschläge geben?

mehlvogel
07-12-2004, 07:47
Ich denke schon das es zu den großen OpenSource Projekten auch Dokumentation (auch zum Klassenaufbau etc) gibt, wieso sollte es das auch nicht?

anda_skoa
07-12-2004, 11:40
Oder andere Entwickler an dem Projekt kontaktieren und um eine kurze Übersicht bitten.
Am Besten gleich angeben, an welcher Teilfunktionalität man arbeiten möchte.

Ciao,
_

ichunddu
07-12-2004, 11:47
Und wenn man das ganze mal von einem einfachen Projekt auf den Linux Kernel überträgt, wo sollte man da anfangen zu lesen?

peschmae
07-12-2004, 17:39
Für das Projekt gibts Bücher. "Linux Kernel Development" von Zack Brown mit vielen bekannten Namen als Korrekturleser z.B.
Oder auch ein älteres welches du im Netz findest.

Ausserdem gibts/gabs im Linux-Magazin eine Serie "Kernel Hack".

MfG Peschmä

BeS
07-12-2004, 19:18
Hallo,
Mit der Hilfe von tags kann man auch ganz gut durch den Quellcode navigieren.
Tags lassen sich für Editoren (vim, emacs) anlegen oder auch in der Form von HTML, was ich ganz praktisch finden.
Dazu mußt du einfach in dem Hauptverzeichnis der Quellen erst 'gtags' und danach 'htags -nF' ausführen. Danach kannst du mit der index.html starten und durch den Quellcode Browsen, die Funktionen sind dann schön verlinkt, so dass du schnell sehen kannst was von wo kommt.

ichunddu
08-12-2004, 07:48
Bitte poste mal die URLs zu gtags/htags.

dipesh
08-12-2004, 14:42
Der Ansatz sich komplett in ein großes Projekt einarbeiten zu wollen ist löblich, aber eventuell auch nicht der Richtige.
Solch große Projekte bestehen im Regelfall aus einzelnen Modulen mit klaren Schnittstellen zu den anderen Modulen. Also fängt man am besten an sich für ein Modul zu entscheiden und sich einen Überblick über die Implementierung zu verschaffen. Guck dir die Dateiennamen an, versuche Zusammenhänge zu erkennen und verschaff dir einen Überblick über die vorhandene Doku. Größere OS-Projekte besitzen im regelfall auch IRC-Channel in denen man den ein oder anderen Entwickler antreffen kann. Verbleibende Fragen sollte man dann direkt dort klären, da die Entwickler tiefer in der Materie stecken und dir eventuell noch die ein oder andere Informationsquelle nennen können.

BeS
08-12-2004, 15:03
Bitte poste mal die URLs zu gtags/htags.

Das sollte eigentlich bei jeder Distribution dabei sein.
Ansonsten einfach mal google anwerfen.

RapidMax
08-12-2004, 23:30
Sehr hilfreich finde ich Doxygen (http://www.doxygen.org/). Doxygen so konfigurieren, dass alles dokumentiert wird. Bei objektorientierten Projekten die Klassenhierarchie grafisch darstellen lassen. Zudem sollte es AFAIK möglich sein, functions calls zu verfolgen.

Ich würde etwa folgende Schritte vorschlagen

Sich zuerst anhand der offiziellen Dokumentation und von Doxygen einen Eindruck verschaffen (Big Picture), ohne ins Detail zu gehen.
Sich eine Skizze mit den wichtisten Modulen und ihrer Beziehungen machen
Entscheiden, welche Module für einem Interessant sind um sie näher zu betrachten (auch Abhängigkeiten, wie z.B. Frameworks und Tool-Libraries)
Mit Hilfe der Dokumentation und Werkzeugen wie Doxygen und ctags, grep etc. sich in den Quelltext einarbeiten.
Test/Beispiel-Programme anschauen, wenn vorhanden (vor allem bei Bibliotheken)
Coding Style-Guides anschauen, falls vorhanden, sonst sich die Gepflogenheiten der Entwickler merken (indent mags richten ;) )
Eigene Funktionen einbauen, interne Datenstrukturen mittels eigenem Code ausgeben um sich ein Gefühlt für die internen Abläufe zu verschaffen.


Gruss, Andy