9

¿Hay alguna manera de identificar los atributos/métodos no utilizados en Visual C++ 2008 Professional? Si no es posible de forma predeterminada, las recomendaciones de herramientas de terceros también son muy apreciadas.Cómo encontrar atributos/métodos no utilizados en Visual C++ 2008

Gracias,
Florian

Editar: NDepend sólo funciona para ensamblados .NET. Estoy buscando algo que pueda usarse con aplicaciones nativas de C++.

Respuesta

6

Probar PC-Lint. Es bastante bueno para encontrar código redundante. Aún no he probado la versión 9. La versión 8 lleva algo de tiempo para configurarse. Pruebe la demostración interactiva en línea.

+0

Esto es exactamente lo que he estado buscando. Hay un complemento VisualLint para Visual Studio que integra PC-Lint.Una solución menos costosa habría estado bien, pero parece que no hay nada por ahí. – fhe

-2

nDepend lo hará, junto con limpiar su casa y llevar al perro a dar un paseo. Hay una versión nagware disponible de forma gratuita.

La siguiente instrucción de código lenguaje de consulta le conseguirá una lista de los métodos utilizados

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

Gracias, pero nDepend parece funcionar solo con ensamblados .NET. – fhe

0

No he utilizado personalmente sus herramientas de productividad (que usar su traje de control de Windows), pero parece que DevExpress tiene un C++ refactor'er llamado Refactor! for C++. No identifiqué de inmediato las características que estás buscando, pero ¿quizás lo tienen?

0

El truco es que muchas funciones en C++ tienen que existir, incluso si no se llaman. Boost especialmente causará esto, pero incluso el código STL regular puede hacer esto. Y tu código tiene que seguirle el juego. Puede definir un copiador porque std :: vector lo requiere formalmente. Pero si no crea una instancia de ningún miembro estándar que realmente copie una T, su copiadora no se utilizará.

Incluso si no es necesario, a menudo existen por seguridad. Por ejemplo, declarar un constructor de copia privada puede evitar que un objeto se copie involuntariamente. Sin la declaración privada, el compilador definiría un copiador público y miembro para usted. Ahora, ¿esto "no se usa" y quieres que te avisemos sobre ellos?

0

PC-Lint es muy potente, pero difícil de usar. Por supuesto, eso describe bastante bien C y C++ ¿no es así?

Otra herramienta que creo que es excelente es Visual Assist de Whole Tomato X que se integra directamente en el IDE.

Existen algunos inconvenientes importantes en C++ cuando se busca código no referenciado: las plantillas, las devoluciones de llamada y los manejadores de mensajes pueden ser críticos para su proyecto, pero nunca se llaman directamente. Por ejemplo, el controlador para un hilo no se llama directamente, sino que es un parámetro cuando se crea un nuevo hilo. Los mensajes de tipo "On_buttonpress" en proyectos MFC o WTL también aparecerán como métodos no llamados.

Una vez que los encuentre puede configurar PC-Lint para ignorar estos, pero la primera vez a través de su mucho trabajo.

+4

¿Podría explicar cómo Visual Assist X ayuda a encontrar el código no utilizado? –

Cuestiones relacionadas