É notório que alguns desenvolvedores são capazes de escrever código que, além de funcionar bem, é simples, fácil de depurar, entender e manter. Por outro lado existem desenvolvedores que, por acidente ou não, escrevem código difícil de entender e manter – além de desenvolvê-lo mais lentamente exatamente pela dificuldade de testes e depuração durante o ciclo de desenvolvimento.
Uma medida que a princípio parece óbvia é usar algum tipo de software para melhorar a qualidade automaticamente, revendo o que foi feito e sugerindo mudanças. Infelizmente esse é um problema relativamente difícil de resolver e só recentemente tivemos avanços nesta direção, indo além de um processo puramente manual de verificação de código.
Felizmente existem hoje novas ferramentas capazes de ajudar a manter a qualidade do código ao longo do processo de desenvolvimento. Eu diria que estas ferramentas seguem duas linhas principais:
• Análise estática do código, sem rodá-lo;
• Testes automatizados, executando o software ou partes dele.
Sou um entusiasta das duas linhas de atuação, mas faço uma importante observação com relação a ambas: não tente abraçar todos seus recursos de uma vez. Lembre-se que sopa quente se come pelas beiradas e que o ótimo é inimigo do bom. Se você não está fazendo nada disso hoje, o pouco que você fizer pode trazer grandes melhoras, portanto comece com coisas simples.
A análise estática é o tipo de ferramenta mais fácil de implantar. O jeito mais indolor é usar um produto como o Resharper da JetBrains ou o CodeRush da DevExpress, que integram-se com o IDE do Visual Studio e mostram imediatamente sugestões de forma clara. Eles podem inclusive modificar o código automaticamente para você. Cada um dos produtos tem seus pontos fortes; ambos são ótimas escolhas. Não instale, porém os dois juntos; eles tendem a “brigar” entre si.
Outra forma de verificação estática é com o uso da opção “Code Analisys” presente nas edições Premium e Ultimate do Visual Studio. Caso a sua versão não tenha este recurso, você pode baixar o “FxCop”, um aplicativo separado que faz basicamente a mesma coisa.
O Visual Studio 2010 não só traz novas verificações, como também ele vem com vários conjuntos de regras e permite também criar novos conjuntos, selecionando as regras mais apropriadas ao seu trabalho. Um problema das versões anteriores desta tecnologia é que elas causavam muitos alarmes, que tendiam a ser ignorados. Sugiro começar com “Microsoft Minimum Recommended Rules” e na medida em que você for entendendo as verificações, incluir novos conjuntos ou mesmo modificar algum deles. Não inclua todas as regras, pois provavelmente você não precisa de várias delas e simplesmente se acostumará a ignorar os avisos, uma prática condenável.
Em comparação ao Resharper e ao CodeRush, as regras do Visual Studio são mais abrangentes, mas seu uso não é interativo, só ocorrendo na hora da compilação. Além disso, ele só analisa seu código e não faz correções automáticas nos fontes.
Quanto aos testes automatizados, trata-se de um assunto mais longo, pois existem diversos tipos de testes e também temos que nos preocupar com o processo de build para automatizar seu uso. Os testes têm sempre um impacto em custos e prazos, não podemos simplesmente instalar um produto e começar a usá-lo, como acontece com as ferramentas de análise estática. Além disso, é importante registrar os testes e acompanhar seus resultados ao longo do ciclo de desenvolvimento do produto.
A principal recomendação que eu faço com relação à testes é a seguinte: não faça os testes “por fazer”, sem entender o que está acontecendo e entender seus custos e reais benefícios. Um bom lugar para começar, em minha opinião, é colocando testes unitários em rotinas que não acessam banco de dados nem têm interface com usuário.
O futuro com certeza trará ainda mais novidades. Por exemplo, a Microsoft anunciou no PDC 2010, um evento para desenvolvedores, que iria melhorar as suas ferramentas nesta direção.
Mauro Sant’Anna (mas_mauro@hotmail.com) infelizmente não é sócio de nenhuma empresa fabricante de ferramentas de análise estática de código.
Olho: A análise estática é o tipo de ferramenta mais fácil de implantar.