Pergunta

Existe uma maneira de identificar atributos não utilizados / métodos em Visual C ++ 2008 Professional? Se não for possível, por padrão, as recomendações de ferramentas 3-parte também são muito apreciados.

Obrigado,
Florian

Editar: NDepend só funciona para .NET assembléias. Eu estou procurando algo que pode ser usado com aplicações nativas C ++.

Foi útil?

Solução

Tente PC-Lint . É muito bom em encontrar código redundante. Eu não tentei versão 9 ainda. Versão 8 faz demorar algum tempo para configurar. Experimente a demonstração interativa online.

Outras dicas

Eu não tenho usado pessoalmente suas ferramentas de produtividade (I usar seu terno de Controle do Windows), mas parece que DevExpress tem um C ++ refactor'er chamado Refactor! para C ++ . Eu não detectar imediatamente as características que você está procurando, mas talvez eles têm?

Cobertura Validador pode mostrar código não utilizado C ++ (mas não atributos). Fá-lo de forma dinâmica para que você tem que 'exersize' o aplicativo para obter os resultados: http://successfulsoftware.net/2008/03/10/coverage-validator/

O pouco complicado é que muitas funções em C ++ tem de existir, mesmo que eles não são chamados. Impulso especialmente fará isso, mas até mesmo o código STL regular pode fazer isso. E seu código tem que jogar junto. Você pode definir um ctor cópia, porque std :: vector requer formalmente. Mas se você não instanciar qualquer membro std :: vector que realmente faz copiar um T, o ctor cópia não vai ser utilizado.

Mesmo que eles não têm que, muitas vezes eles existem para a segurança. Por exemplo, declarando um construtor de cópia privada pode impedir que um objeto a partir de cópia não intencional. Sem a declaração privado, o compilador iria definir um público, memberwise copiar ctor para você. Agora, é este "não usado" e quer ser avisado sobre eles?

PC-Lint é muito poderoso, mas difícil de se inclinar. É claro que muito bem descreve C e C ++ não é?

Outra ferramenta que eu acho que é excelente é do tomate inteiro Visual Assist X que integra direito no IDE.

Há algumas grandes armadilhas em C ++ na busca de código unreferenced: modelos, retornos de chamada e manipuladores de mensagem pode ser crucial para o seu projeto, mas nunca são chamados diretamente. Por exemplo, o manipulador para um segmento não é chamado diretamente, mas é um parâmetro quando você cria um novo segmento. Os "On_buttonpress" mensagens do tipo em projetos MFC ou WTL também vai aparecer como métodos chamou-un.

Uma vez que você encontrá-los você pode configurar o PC-Lint ignorar estes, mas pela primeira vez através de seu um monte de trabalho.

NDepend vai fazê-lo, juntamente com a limpeza de sua casa e levar o cachorro para um passeio. Há uma versão nagware disponível gratuitamente.

A declaração a seguir código de linguagem de consulta você irá obter uma lista de métodos não utilizados

 WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE MethodCa == 0 AND 
   !IsPublic AND !IsEntryPoint AND !IsExplicitInterfaceImpl AND 
   !IsClassConstructor AND !IsFinalizer
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top