 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Meinert Schwartau Guest
|
Posted: Thu May 27, 2004 8:28 am Post subject: tote Klassen in Quelltext finden |
|
|
Hallo, ich habe folgendes Problem:
Ich muss wissen, welche Klassen in meinem (sehr großen) C++ Quelltext
nicht mehr von der Anwendung aufgerufen werden. Weiß jemand, ob es ein
freies Tool gibt dass automatisch "tote" Klassen findet?
mfG Meinert Schwartau
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
King Leo - Martin Oberzal Guest
|
Posted: Thu May 27, 2004 9:44 pm Post subject: Re: tote Klassen in Quelltext finden |
|
|
Meinert Schwartau wrote:
| Quote: | Ich muss wissen, welche Klassen in meinem (sehr großen) C++ Quelltext
nicht mehr von der Anwendung aufgerufen werden. Weiß jemand, ob es ein
freies Tool gibt dass automatisch "tote" Klassen findet?
|
Naja, wenn du eine statische Biblothek baust, und diese dann in einem C++
Programm linkst, dann verwendet ein guter Linker nur jene obj Dateien, die
auch tatsächlich verwendet werden.
Also, wenn du den Quellcode zum Linker hast, dann kannst du dich ja
reinhacken....
Ansonsten würd ich grep und awk empfehelen.
Gruß, Martin!
--
Forget GNU Stow, use the power of XStow: http://xstow.sourceforge.net
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Andreas Kasparz Guest
|
Posted: Fri May 28, 2004 8:52 am Post subject: Re: tote Klassen in Quelltext finden |
|
|
On 2004-05-27, *Meinert Schwartau* wrote:
| Quote: | Ich muss wissen, welche Klassen in meinem (sehr großen) C++ Quelltext
nicht mehr von der Anwendung aufgerufen werden. Weiß jemand, ob es ein
freies Tool gibt dass automatisch "tote" Klassen findet?
|
cxref
<http://www.gedanken.demon.co.uk/cxref/>
Gruß,
A.
--
Andreas Kasparz, Dresden, Germany
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Heinz Saathoff Guest
|
Posted: Fri May 28, 2004 12:11 pm Post subject: Re: tote Klassen in Quelltext finden |
|
|
Andreas Kasparz schrieb...
| Quote: | On 2004-05-27, *Meinert Schwartau* wrote:
Ich muss wissen, welche Klassen in meinem (sehr großen) C++ Quelltext
nicht mehr von der Anwendung aufgerufen werden. Weiß jemand, ob es ein
freies Tool gibt dass automatisch "tote" Klassen findet?
cxref
http://www.gedanken.demon.co.uk/cxref/
|
Dort steht aber "(The cxref program only works for C not C++, I have no
plans to produce a C++ version.) "
Also nix mit toten C++ Klassen finden.
- Heinz
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Karl Heinz Buchegger Guest
|
Posted: Fri May 28, 2004 1:25 pm Post subject: Re: tote Klassen in Quelltext finden |
|
|
Meinert Schwartau wrote:
| Quote: |
Hallo, ich habe folgendes Problem:
Ich muss wissen, welche Klassen in meinem (sehr großen) C++ Quelltext
nicht mehr von der Anwendung aufgerufen werden. Weiß jemand, ob es ein
freies Tool gibt dass automatisch "tote" Klassen findet?
|
So wie ich das sehe, ist es in C++ gar nicht so einfach rauszufinden
ob eine Klasse irgendwo benutzt wird oder nicht. Stichwort: Polymorphie
In reinem Standard C++ geht's ja noch. Aber mal ehrlich: In der
realen Welt kommst mit Standard C++ nicht sehr weit. Irgendwelche
zusätzlichen Libraries hat doch jeder dabei. Und nur mit der Kenntnis
der Header Files kann man nicht entscheiden, ob nicht innerhalb der
Library ein Objekt einer abgeleiteten Klasse erzeugt wird oder nicht,
und wenn ja unter welchen Umständen.
--
Karl Heinz Buchegger
[email]kbuchegg (AT) gascad (DOT) at[/email]
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Marcel Müller Guest
|
Posted: Fri May 28, 2004 5:33 pm Post subject: Re: tote Klassen in Quelltext finden |
|
|
Meinert Schwartau wrote:
| Quote: | Hallo, ich habe folgendes Problem:
Ich muss wissen, welche Klassen in meinem (sehr großen) C++ Quelltext
nicht mehr von der Anwendung aufgerufen werden. Weiß jemand, ob es ein
freies Tool gibt dass automatisch "tote" Klassen findet?
|
Flls der Linker eine Möglichkeit bietet im Map-File eine Cross-Reference
List anzubieten, wäre das ein erster Ansatz. => Unbenutzte Symbole
Allerdings muß dann immernoch sichergestellt werden, daß es keine
Referenz von innerhalb des gleichen Objektmoduls gibt.
Wenn jede Klasse in einem eigenen Objektmodul liegt, kann man die Sache
mit der Cross-Reference-List aber durchaus anwenden.
Alternativ kann man auch alle Objektmodule in eine statische Bibliothek
packen und dan mit dem main-Modul linken. Dann reicht bereits die Liste
der eingebundenen Module (aus der Lib). Das kann auch durch zyklische
Referenzen nicht ausgetrickst werden.
Problematisch wird die Sache bei template Klassen.
Marcel
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
Michael Schlenger Guest
|
Posted: Sun Jun 13, 2004 8:15 pm Post subject: Re: tote Klassen in Quelltext finden |
|
|
On 27 May 2004 01:28:32 -0700, [email]meinert.schwartau (AT) globefuel (DOT) com[/email]
(Meinert Schwartau) wrote:
| Quote: | Hallo, ich habe folgendes Problem:
Ich muss wissen, welche Klassen in meinem (sehr großen) C++ Quelltext
nicht mehr von der Anwendung aufgerufen werden. Weiß jemand, ob es ein
freies Tool gibt dass automatisch "tote" Klassen findet?
Extrem schwierig. Ein solcher "xrefer" müsste prinzipiell den parser |
des Compiler komplett nachbilden (oder enthalten). Warum?
Z.B. wegen der Möglichkeit zum Überladen. Es bedarf einiges an
Aufwand, im folgenden das korrekte f zu identifizieren:
void f( int );
void f( double );
void g( long value )
{
f( value );
}
Der Parser muss also EXAKT die vom Compiler verwendeten
Auflösungsverfahren verwenden. Je nach Hersteller muss dies nicht
unbedingt dem C++ Standard entsprechen. Schließlich will man ja die
tatsächlich aufgerufene Funktion finden, und nicht die vielleicht nach
dem Standard Korrekte.
Nun multipliziere man die Komplexität des einfachen name lookup noch
mit der von namespaces. Koenig-Lookup natürlich nicht zu vergessen.
Hat man nun noch keine grauen Haare, kann man das leicht erreichen,
wenn man Schablonen hinzu nimmt:
void f( int );
void f( double );
template< typename T>
void g( T value )
{
f( value );
}
Hier kommt es offensichtlich auf den Instanziierungkontext an, welches
f in g verwendet wird.
Übrigends: Über die Feinheiten der Semantik bei Schablonen hat das
Komitee jahrelang debattiert. Selbst heute gibt es noch unklare Fälle!
Ergo: Besinne dich auf eine der Grundparadigmen der Programmierung in
typisierten Sprachen, also auch C++:
The Compiler Is Your Friend...
Will heißen: Lass die Klasse(n) einfach raus, und rekompiliere dein
Projekt. So was kann man bequem über Nacht machen. Wird das Teil
irgendwo referenziert, kriegst du eine Fehlermeldung.
Wenn es sich um ein sehr großes Projekt handelt, ist dies in der
Praxis die einzig mögliche Lösung. Man wird natürlich erst mal greppen
und so die Zahl der Compilerläufe zum Ausprobieren erheblich
reduzieren können.
------------------------------------------------
Michael Schlenger
------------------------------------------------
--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|