Pergunta

Eu estou usando VS2008 para um projeto C ++. O código é bastante antigo e já passou por muitas mãos. Existem várias classes hierarquias, funções, enums e assim por diante que não estão mais sendo usados.

Existe uma maneira de obter o compilador / vinculador a lista fora identificadores que tenham sido declaradas ou definidas, mas não estão sendo mencionados em qualquer lugar?

Foi útil?

Solução

PC-Lint análise "do projeto inteiro" (que analisa vários arquivos juntos) pode fazer isso. Não hesite em me contactar se precisar de ajuda para configurá-lo.

Outras dicas

VS irá avisar sobre identificadores declarados dentro de uma função e não utilizados, você pode precisar se deslocar para o nível de aviso 4, mas para variáveis ??globais e uma caça para muitos outros problemas potenciais, você faria bem para tentar lint ou lint visuais

Não tenho certeza sobre o Visual C ++, mas o g ++ adverte sobre variáveis ??não utilizadas. Você pode tentar passar o seu código através do g ++.

PC-Lint vai fazer isso. No entanto, não executá-lo com tudo o que um. Eu fiz e tinha 1,2 milhões erros - o que correspondeu a ~ 5 por linha. Este foi empurrado para cima muito porque listas de classe quase todos UI referenciada RESOURCE.H e RESOURCE.H um monte de # define a que lint diz "substituir define com int const". Para um ponto bom começo ler este post sobre o poder de 2 blogue .

Para as declarações não utilizados mais óbvias, um alto warnlevel iria cuidar da questão.

Em relação à identificação das partes não utilizadas de código, o deadstripper (não sendo o centro de um drama policial tarde da noite, mas o mecanismo que culls código não utilizado durante ligando) só vai chegar uma parte do caminho - o que você realmente quer é uma ferramenta de análise de cobertura de código. existem muitas, infelizmente, todos eles são bastante caros.

Um editor robusto, com marcação contexto bem e do mecanismo de gráficos chamada será também ajuda.

Com referência ao post de Graham:. FWIW Eu nunca realmente visto a "substituir define com int const" mensagem com arquivos RESOURCE.H - embora alguns outros (previamente definidos no mesmo local) pode ser uma dor

Independentemente disso, se uma determinada mensagem PC-Lint é ficar no caminho de manchar o que você está procurando é uma questão simples de desligá-lo usando -e em seu arquivo options.lnt. Também vale a pena estar ciente da opção -w, que permite definir globalmente o nível de aviso (por exemplo -w0 + e766 desliga tudo, exceto mensagem 766).

Para símbolos e declarações não utilizados, você vai querer olhar para fora mensagens como 755 (Informações - macro global não referenciados), 758 (Informações - enum global não referenciada), 769 (Informação - constantes enumeração mundial não referenciada) e 1714 (Informação - função de membro não referenciada). Lembre-se que estes são suprimidos na análise de arquivo único, então você precisa para executar análise de projeto inteiro para vê-los.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top