Eu estou olhando para algum código C / C ++ que parece ter funções definidas, mas nunca usadas. Este é um processo bastante tedioso para rastrear o código e verificar. Eu fiz algumas pesquisas e existem várias ferramentas que podem fazer esse tipo de análise.
Alguém pode compartilhar experiências ou dicas sobre quais ferramentas e técnicas são melhores ou métodos alternativos para verificar esse código de fato não são usados?
Respostas:
Existem algumas ferramentas por aí que podem encontrar 'código morto' em seus programas. você pode ler sobre eles nos threads Stack Overflow aqui e aqui . um pequeno resumo:
use os sinalizadores do compilador gcc -Wunused e -Wunreachable-code e use uma ferramenta como lcov para encontrar os métodos não utilizados.
fonte
Vestígio? Por quê? Apenas comente-os e execute o compilador. Ele informará rapidamente se você comentou alguma função referenciada em outro lugar.
fonte
Se você estiver procurando ativamente por código não utilizado, use algo sugerido por Jake223 .
Mas, se você apenas encontrar algum código que parece não ser usado, basta pesquisar o nome do método na sua base de código. Se for um método privado, seu trabalho é fácil, pesquise apenas a classe atual. Se for um método público, pesquise tudo. Se for uma classe inteira, procure o nome em todo o seu código.
Sem sucesso? Perfeito. Exclua o código e execute testes . Você tem testes, não é? Em seguida, confirme suas alterações no sistema de versão do documento . Você usa um, não é? Dessa forma, se você descobrir, sempre, que precisa disso de volta, basta reverter uma mudança.
A exclusão do código deve ser algo que você faz todos os dias. Talvez você refatorar algum código e excluir o antigo. Ou encontre um código antigo e não utilizado e exclua-o. E mesmo que você não tenha backups, quão difícil é reescrever uma função ou duas? E na segunda vez, você certamente os escreverá melhor do que antes.
fonte
A menos que você esteja procurando problemas (ou seja, você sabe que eles devem ser chamados) por que se preocupar. Se eles forem genuinamente desnecessários, provavelmente serão removidos pelo vinculador e, em qualquer caso, o espaço desperdiçado não será significativo. Por outro lado, se você removê-los e depois descobrir que eles eram necessários (talvez em alguma configuração do compilador desconhecida), você terá mais trabalho a fazer para recuperá-los. Isso é especialmente difícil se a remoção e a redescoberta forem separadas por muito tempo.
fonte
Meu IDE de escolha é o Eclipse, e embora seja complicado e complicado de configurar no início, vale a pena o esforço considerando todas as ferramentas que recebo. Uma dessas ferramentas (e eu não tenho idéia de qual é o nome oficial) informa sobre códigos não utilizados, como classes, funções, variáveis etc. O IDE simplesmente exibe uma linha amarela abaixo da declaração. Não tenho 100% de certeza se isso funciona com projetos com vários arquivos, mas você sempre pode tentar!
fonte
Os IDEs geralmente possuem esse recurso bem implementado e funcionam por padrão (geralmente podem ser desativados).
Qualquer que seja o método escolhido nas outras respostas para encontrar código morto, esteja sempre ciente dos problemas de reflexão. Alguns métodos / campos podem ser acessados apenas através da reflexão. A remoção desses métodos não acionará nenhum alarme, exceto no tempo de execução.
Se você tiver (bons) testes escritos para seus projetos, eles serão de grande valor nessa situação.
fonte
Você pode usar o Cppcheck para esta finalidade:
fonte