9

Gibt es eine Möglichkeit, nicht verwendete Attribute/Methoden in Visual C++ 2008 Professional zu identifizieren? Wenn dies nicht standardmäßig möglich ist, werden auch Empfehlungen von Drittanbieter-Tools sehr geschätzt.Wie finden Sie nicht verwendete Attribute/Methoden in Visual C++ 2008

Danke,
Florian

Edit: NDepend funktioniert nur für .NET-Assemblies. Ich suche nach etwas, das mit nativen C++ - Anwendungen verwendet werden kann.

Antwort

6

Versuchen Sie PC-Lint. Es ist ziemlich gut, redundanten Code zu finden. Ich habe Version 9 noch nicht ausprobiert. Version 8 benötigt etwas Zeit für die Konfiguration. Probieren Sie die interaktive Online-Demo aus.

+0

Genau das habe ich gesucht. Es gibt ein VisualLint-Add-In für Visual Studio, das PC-Lint integriert.Eine weniger teure Lösung wäre in Ordnung gewesen, aber es scheint, dass es nichts gibt. – fhe

-2

nDepend wird es tun, zusammen mit der Reinigung Ihres Hauses und mit dem Hund spazieren gehen. Es gibt eine Nagware-Version, die kostenlos zur Verfügung steht.

Der folgende Code-Abfragesprache-Anweisung finden Sie eine Liste von nicht verwendeten Methoden erhalten

WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE MethodCa == 0 AND 
    !IsPublic AND !IsEntryPoint AND !IsExplicitInterfaceImpl AND 
    !IsClassConstructor AND !IsFinalizer 
+1

Danke, aber nDepend scheint nur mit .NET-Assemblys zu arbeiten. – fhe

0

Ich habe nicht persönlich ihre Produktivitäts-Tools verwendet (I ihre Fenster Steuer Anzug verwenden), aber es sieht aus wie DevExpress eine C hat ++ refactor'er genannt Refactor! for C++. Ich habe nicht sofort die Funktionen gefunden, nach denen du suchst, aber vielleicht haben sie es?

0

Das schwierige Bit ist, dass viele Funktionen in C++ existieren müssen, auch wenn sie nicht aufgerufen werden. Boost vor allem wird dies verursachen, aber sogar der normale STL-Code kann dies tun. Und dein Code muss mitspielen. Sie könnten eine Kopie ctor definieren, weil std :: vector es formell benötigt. Aber wenn Sie kein std :: vector member instanziieren, das tatsächlich ein T kopiert, bleibt Ihr copy ctor ungenutzt.

Auch wenn sie nicht müssen, existieren sie oft aus Sicherheitsgründen. Beispielsweise kann die Deklaration eines Konstruktors für private Kopien verhindern, dass ein Objekt unbeabsichtigt kopiert wird. Ohne die private Deklaration würde der Compiler eine öffentliche, elementweise Kopie ctor für Sie definieren. Nun, ist das "unbenutzt" und willst du vor ihnen gewarnt werden?

0

PC-Lint ist sehr mächtig, aber schwer zu lehnen. Natürlich beschreibt das ziemlich gut C und C++, nicht wahr?

Ein anderes Werkzeug, das ich denke, ist ausgezeichnet ist Whole Tomato's Visual Assist X, die direkt in die IDE integriert.

Es gibt einige große Probleme in C++ bei der Suche nach nicht referenziertem Code: Vorlagen, Callbacks und Message-Handler können für Ihr Projekt kritisch sein, werden aber nie direkt aufgerufen. Zum Beispiel wird der Handler für einen Thread nicht direkt aufgerufen, sondern ist ein Parameter, wenn Sie einen neuen Thread erstellen. Nachrichten vom Typ "On_buttonpress" in MFC- oder WTL-Projekten werden ebenfalls als nicht aufgerufene Methoden angezeigt.

Sobald Sie sie finden, können Sie PC-Lint konfigurieren, um diese zu ignorieren, aber das erste Mal durch seine viel Arbeit.

+4

Können Sie erläutern, wie Visual Assist X beim Auffinden von nicht verwendetem Code hilft? –

Verwandte Themen