sábado, 1 de julho de 2017

Vigésima Primeira Semana - Nosso Erro

Em nossa última aula de PDS, os professores orientadores nos chamaram a atenção quanto ao modelo de postagem que estamos seguindo. Apesar da conversa, continuamos com dúvidas a respeito disso, já que o modelo sugerido (ou o que entendemos dele) consiste em publicações a respeito de experiências passadas pelo time na semana, com o intuito de ajudar outros times que podem passar pelas mesmas coisas, mas o que entendemos da bíblia (dicas.ivan) consiste em relatórios semanais resumidos do progresso das atividades do grupo. Como estamos de férias a partir dessa semana, mandamos um e-mail com o intuito de tirar essa dúvida (enquanto isso vamos continuar errando).
Voltando à nossa programação, durante a semana refatoramos nosso código da documentação no LaTeX, separando os capítulos em arquivos diferentes, para facilitar a navegação. Também pesquisamos sobre análise estática, para que possamos prosseguir com nossa documentação.
Com isso, descobrimos que a análise estática de código verifica a qualidade do código-fonte. Essa verificação é realizada antes mesmo que haja execução do software, diferentemente do que ocorre com os testes unitários que validam o software com base no resultado de sua execução.
É importante ressaltar a diferença entre validação e verificação, para completo entendimento do conceito da análise estática. Uma verificação considera “fazer certo alguma coisa”, ou seja, garante que os passos para atingir um dado objetivo foram realizados corretamente. Verificação é eficiência. A validação trata de “fazer a coisa certa”, ou seja, garantir que o objetivo seja atingido, independente da forma como os passos foram realizados. Validação é eficácia. Considera-se, portanto, que a análise estática de código está relacionada à verificação, pois analisa como o código-fonte foi construído internamente.
A análise estática de código não verifica apenas arquivos texto (com extensão .java, .jsp, .js). Cada ferramenta, dependendo de sua implementação, pode realizar a verificação em código-fonte ou bytecode. Embora algumas ferramentas sejam capazes de realizar a verificação estática em arquivos JSP e JavaScript, por exemplo, a análise aqui costuma se focar especificamente em código-fonte Java (bem como EM bytecodes).
A análise estática pode ter sua verificação agrupada em três aspectos principais:
- Verificação por estilo: Considera elementos como indentação, espaços e tabs, convenção de nomes, número de parâmetros, alinhamento na vertical, formato e presença de comentários, dentre outros. São todos os aspectos que contribuem para tornar o código mais padronizado, organizado e legível. A ferramenta mais utilizada para verificação por estilo é o Checkstyle (http://checkstyle.sourceforge.net/);
- Verificação por boas práticas: Aplica uma gama de regras para verificar se práticas corretas estão sendo realizadas, como evitar duplicação de código, garantir o correto uso de encoding, implementação do método clone(), tamanho de métodos e classes, tamanho de parâmetros, uso do padrão Singleton, criação desnecessária de variáveis locais e muitas outras. O conjunto de regras é extenso e visa garantir que o código apresente as melhores práticas possíveis. A ferramenta de verificação mais utilizada para aplicar boas práticas é o PMD (https://pmd.github.io/);
- Verificação por bugs: Trata de encontrar erros no sistema. Isto é importante para antecipar a identificação de problemas no software (até antes mesmo de sua execução pelo cliente). A ferramenta mais utilizada para identificação de bugs é o Firebug (http://getfirebug.com/).
A verificação das ferramentas PMD e Checkstyle é realizada sobre código-fonte não compilado (arquivo com extensão .java), mas a verificação com Firebug analisa bytecodes (arquivos compilados do Java, com extensão .class). Desta forma, para análises envolvendo Firebug, uma compilação prévia é necessária. Isso é tratado pelo seu respectivo plugin, de forma que se faz transparente ao desenvolvedor.
Para fazer análise estática em projetos de Android, é recomendado o uso do Lint, outros softwares como FindBugs e o APK Analyzer (que já vem juntamente com o Android Studio) também são utilizados para fazer essas verificações.
Depois de tanta pesquisa, utilizamos o CheckStyle para verificar nosso código e achamos alguns erros. Na próxima semana, vamos documentar esses erros e terminar de corrigi-los.

De: Renata Souza

Nenhum comentário:

Postar um comentário