Quem mantém um projeto Delphi grande conhece a pergunta: se eu alterar ou remover esta unit, quais partes da aplicação serão afetadas? Encontrar as referências diretas na cláusula uses ajuda, mas nem sempre mostra o caminho completo.
Ver resumo completo
Quem mantém um projeto Delphi grande conhece a pergunta: se eu alterar ou remover esta unit, quais partes da aplicação serão afetadas? Encontrar as referências diretas na cláusula uses ajuda, mas nem sempre mostra o caminho completo. Uma unit pode ser usada por outra, que é usada por uma terceira, até chegar ao arquivo principal do projeto.
Foi para tornar essa investigação mais prática que criei o Delphi Unit Backtrace. A primeira versão pública já está disponível no GitHub, com executáveis para Win32 e Win64. A ferramenta recebe um arquivo .dproj e o nome da unit, descobre o fonte correspondente e percorre as dependências no sentido inverso: da unit escolhida até seus consumidores e, quando existe essa ligação, até o DPR.
Quem trabalha há bastante tempo com Delphi provavelmente já encontrou units com cláusulas uses enormes, formadas por dezenas de dependências que ninguém sabe ao certo se ainda são necessárias. Algumas foram adicionadas automaticamente pela IDE, outras eram utilizadas por trechos de código que já não existem e muitas permanecem na seção interface mesmo sendo necessárias apenas na implementação.
Ver resumo completo
Quem trabalha há bastante tempo com Delphi provavelmente já encontrou units com cláusulas uses enormes, formadas por dezenas de dependências que ninguém sabe ao certo se ainda são necessárias. Algumas foram adicionadas automaticamente pela IDE, outras eram utilizadas por trechos de código que já não existem e muitas permanecem na seção interface mesmo sendo necessárias apenas na implementação. Embora pareça um problema meramente estético, esse acúmulo pode aumentar o acoplamento entre as units, dificultar a manutenção e ampliar desnecessariamente o impacto de cada alteração realizada no projeto.
Remover essas dependências manualmente nem sempre é simples. Excluir uma unit da cláusula uses, compilar o projeto e repetir o processo até encontrar todas as dependências desnecessárias pode consumir muito tempo, principalmente em sistemas antigos ou de grande porte. Além disso, algumas units possuem efeitos colaterais durante a inicialização da aplicação e não podem ser removidas apenas porque seus símbolos não aparecem diretamente no código. É nesse cenário que o Atropos se apresenta como uma ferramenta interessante para a comunidade Delphi.
O Atropos é um projeto open source (github.com/ViniAbreu/Atropos) criado para analisar e otimizar automaticamente as cláusulas uses de projetos Delphi. A ferramenta identifica units aparentemente não utilizadas, verifica quais dependências podem ser transferidas da seção interface para a seção implementation e modifica os arquivos de código. Depois disso, ela tenta compilar o projeto para confirmar que as alterações continuam válidas. Se a compilação falhar, os arquivos modificados são restaurados automaticamente.