Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.

Slides:



Advertisements
Apresentações semelhantes
Curso de aprofundamento na linguagem C
Advertisements

Programação Orientada a Objetos*
Paulo Marques Hernâni Pedroso
Modificadores Marco Antonio, Arquiteto de Software – TJDF Atualizado em Novembro/2008.
Modificadores Marco Antonio. Introdução Em todas as linguagens de programação o acesso a classes/métodos deve seguir algumas regras.
Recursividade Prof. Alex F. V. Machado
Iniciação ao Java – Márcio F. Campos
Polimorfismo e Acoplamento Dinâmico
Classes Concretas e Abstratas
Refactoring de Programas Java
Walfredo Cirne walfredo.dsc.ufpb.br
Políticas Curso de aprofundamento em linguagem C.
Polimorfismo e Classes Abstratas Profa
Programação Concorrente
9 Controle de fluxo Seqüenciadores. Jumps. Escapes. Exceções.
Paradigmas da Programação – Semestre 1 – Aula 3
Documentando con Javadoc
Herança e Polimorfismo
Herança P. O. O. Prof. Ângela e Grace.
Estrutura de Dados em Java
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
Concorrência em Java Threads em Java.
Programação Orientada a Objetos com Java
Conceitos de Linguagem de Programação
Interfaces.
Atributos, Encapsulamento e Interface em Java
Chamada Remota de Procedimentos
Classes, Objetos, Atributos e Métodos JAVA
Linguagem de Programação JAVA
Java Bytecode Software Básico Mitsuo Takaki.
Paulo Borba Centro de Informática Universidade Federal de Pernambuco
Programação Orientada à Objetos
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Linguagem II Exceções.
Paradigmas da Programação – Semestre 1 – Aula 10 Professor: Eduardo Mantovani )
Aula Prática 1 Monitoria IP/CC (~if669). Verificação Dinâmica de Tipos Métodos de superclasses e subclasses: Uso de métodos de subclasses quando se é.
Implementação Orientada a Objetos – Aula 03
Tratamento de Exceções
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
Prof. Gilberto Irajá Müller
Orientação a Objetos usando Java
Java Kickstart, day 2 Semelhanças com linguagem C.
Aula Prática 4 Monitoria IP/CC (~if669).
Implementação Orientada a Objetos – Aula 05 Construtores e sobrecarga de métodos Prof. Danielle Martin Universidade de Mogi das Cruzes
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota (com material da Qualiti Software Process)
1 Marcio de Carvalho Victorino JAVA. 2 Declaração de Atributos [ ] [transient] [volatile] [static] [final] ; controle de acesso –public, package (default),
Interfaces POO Avançado.
Classes Abstratas e Interface
Exceções Suzana Fragoso (smpf) Adaptado do material de Guilherme Carvalho (gvc)
Herança e Arquitetura em camadas
Removing Unnecessary Synchronization in Java Sérgio Soares Gente.
Aula Prática 5 05/05/2010. //Estrutura do método public int subtrair (int a, int b){ //Calcule a operação desejada. int resultado = a – b; //Retorne o.
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Recursividade Bruno Silva.
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Aula Prática 3 Funções Monitoria Introdução à Programação.
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Paradigmas da Programação – Semestre 1 – Aula 8 Professor: Eduardo Mantovani )
Bruno Inojosa MCP .NET Framework
Modificadores Programação II.
Copyright 2000, Departamento de Informática, UFPE. Todos os direitos reservados sob a legislação em vigor. Orientação a Objetos e Java.
Paulo Borba Centro de Informática Universidade Federal de Pernambuco Exceções.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin/ Marcia Bissaco Universidade de Mogi das Cruzes
Aula 8 – Padrão Singleton
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Ambientação com a Sintaxe de Java: parte 2 Prof. Gustavo Wagner Slides Originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB  Centro de.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha

Fábrica de Software Ferramentas para Auditoria de Código Metamata Audit Metamata Metrics JavaPureCheck

Fábrica de Software Ferramentas para Auditoria de Código Metamata Audit –Avalia código fonte procurando erros, pontos fracos, estilos de acordo com padrões de codificação –Sugere modificações geralmente para melhorar Performance, Robustês, Legibilidade –Métricas: boas práticas de programação –Habilitação das métricas –Criação de métricas próprias

Fábrica de Software Métricas utilizadas na ferramenta Metamata Audit Ordem de ocorrência dos modificadores Corpo de loops e de comandos if obrigatoriamente dentro de blocos Importação de classes –pacote java.lang –desnecessárias –tipo.*

Fábrica de Software Métricas utilizadas na ferramenta Metamata Audit Convenções de Nomeclatura –Classes, interfaces, métodos, atributos, constantes, pacotes, variáveis locais v.isEmpty() == true for (int i = 0 ; i < v.size() ; i++ {... } while (...) { str = str + “...”; } int i; float f;... ; f = (float) i;

Fábrica de Software Métricas utilizadas na ferramenta Metamata Audit class Carro extends Veiculo {... } Carro car;... ; if (car instanceof Veiculo)... Veiculo v;... ; if (v instanceof Carro)... i = j = 3 + 4; i = j ;... ; i = (j = 5) + 1; int sum(i) {... ; i++ ;... }...; sum(n) for (int i = 0 ;...; i++) {... ; i = 10 ;... }

Fábrica de Software Métricas utilizadas na ferramenta Metamata Audit if (a && b || c) {... }... if ((a && b) || c) {... } class C { int f;... int do() { int f;... }... int do(int f) {... }... } class C {int index() {... }... int do() { int index;... }... } abstract interface MyInterface {... }

Fábrica de Software Métricas utilizadas na ferramenta Metamata Audit Um método que retorna valor não deve alterar o estado (polêmico) class M { int i;... void incr() { i++ }... int val() { i-- ; incr(); return i; } } Justificativa: –separação de métodos que consultam estados x executam Desvantagem: eficiência

Fábrica de Software Métricas utilizadas na ferramenta Metamata Audit Métodos sincronizados synchronized void do() {... } void do() {synchronized (this) {... } } Vantagens: –Legibilidade (+ de 1 sync.), redefinição, depuração Desvantagens: –Eficiência de alguns compiladores

Fábrica de Software Métricas utilizadas na ferramenta Metamata Audit Métodos estáticos sincronizados static synchronized void do() {... } void do() { synchronized (MyClass.this) {... } } Vantagens: –Livre de problemas em certas versões do JDK

Fábrica de Software Métricas utilizadas na ferramenta Metamata Audit interface I { public static final int x = 4; public abstract void do(); } int x[]; double[] num[]; char[] c; try {... } catch (MyException me) {} try { throw new IOException(); } catch (Exception e) {... }

Fábrica de Software Métricas utilizadas na ferramenta Metamata Audit import MyClass;... ; import MyClass;... Declarações locais (variáveis, parâmetros, membros privados) não utilizadas Declarações globais (acessível fora da própria classe) não utilizadas

Fábrica de Software Métricas utilizadas na ferramenta Metamata Audit class SuperClass { private void f(Vector v) {...} } class SubClass extends SuperClass { private void f(Vector v) {...} }

Fábrica de Software Métricas utilizadas na ferramenta Metamata Audit class SuperClass { void f(Vector v) {...} } class SubClass extends SuperClass { abstract void f(Vector v); }

Fábrica de Software Métricas utilizadas na ferramenta Metamata Audit class SuperClass { void f(int i) {...} void f(Vector v) {...} } class SubClass extends SuperClass { void f(double d) {...} }

Fábrica de Software Métricas utilizadas na ferramenta Metamata Audit public class MyClass1 { public int f(int i) {... } int f(char i) {... } } class MyClass2 { // classe de outro pacote public void do() { char c =...; MyClass1 mc =...; mc.f(c); }

Fábrica de Software Métricas utilizadas na ferramenta Metamata Audit switch (exp) { case 1:... case 2: case 256:... case 257:... }

Fábrica de Software Métricas utilizadas na ferramenta Metamata Audit class MyClass { static void do() {... } } class MyClass2 { void f() { MyClass c =... ;... ; c.do(); } }

Fábrica de Software Métricas utilizadas na ferramenta Metamata Audit class MyClass { static int valor; static void init(int i) { valor = i; } } class MyClass2 { static int valor2 = MyClass.valor + 2; }

Fábrica de Software Ferramentas para Auditoria de Código Metamata Metrics –Identifica complexidade, acoplamento e coesão de código –Métricas baseadas em recomendações da quality assurance comunity –Serve de guia para cálculo da qualidade de software –Habilitação das métricas

Fábrica de Software Métricas utilizadas no Metamata Metrics V(G) –Número de caminhos possíveis de execução em um código –Complexidade –Comandos while, if, for, switch

Fábrica de Software Métricas utilizadas no Metamata Metrics LOC –Linhas de código –Legibilidade, reusabilidade, manutenbilidade –Número de linhas de código, em branco ou de comentário, número de comandos

Fábrica de Software Métricas utilizadas no Metamata Metrics DIT –Profundidade de hierarquias de classes –Interfaces e classe Object: profundidade 1 –Outras classes: 1 + profundidade da superclasse

Fábrica de Software Métricas utilizadas no Metamata Metrics NOA –Números de atributos declarados em uma classe –Quanto maior o estado, maior a dificuldade de manter invariantes entendimento

Fábrica de Software Métricas utilizadas no Metamata Metrics NRM –Número de Métodos Remotos –Um método é remoto para uma classe se ele for invocado e não for declarado Na própria classe Em alguma superclasse ou superinterface Em alguma subclasse

Fábrica de Software Métricas utilizadas no Metamata Metrics NLM –Número de Métodos Locais –Um método é local para uma classe se ele for invocado e for declarado na própria classe ou interface

Fábrica de Software Métricas utilizadas no Metamata Metrics WMC –Complexidade da Classe de acordo seus Métodos locais –Conta número de métodos locais ponderando de acordo com V(G) Número de parâmetros

Fábrica de Software Métricas utilizadas no Metamata Metrics RFC –Tamanho do conjunto de resposta para uma classe –Conjunto de resposta Métodos locais e de outros objetos Podem ser chamados a partir da invocação de um método da classe DAC –Número por classe de tipos utilizados na definição de atributos que não sejam do próprio tipo da classe, das subclasses e das superclasses

Fábrica de Software Métricas utilizadas no Metamata Metrics FAN OUT –Número de tipos utilizados na declaração de Atributos Partâmetros formais e retornos de métodos Throws Variáveis locais que não sejam do próprio tipo da classe, das subclasses e das superclasses

Fábrica de Software Métricas utilizadas no Metamata Metrics CBO –Acoplamento entre classes baseado No acesso de membros de outras classes Na passagem de objetos de outras classes como parâmetro de métodos –Usa o Fan Out

Fábrica de Software Métricas utilizadas no Metamata Metrics LCOM –Falta de coesão dos métodos de uma classe –Interseção dos conjuntos de atributos acessados por esses métodos NOCL –Número de classes definidas

Fábrica de Software Ferramentas para Auditoria de Código JavaPureCheck –Inspeciona o código em busca de problemas de portabilidade –Parte do 100% Pure Java Certification Program –Identifica alguns dos problemas levantados pelo 100% Pure Java Certification Program

Fábrica de Software Desenvolvendo Programas Puros Linhas guias –Runtime.exec() –Class.forName() (warning) –ClassNotFoundException.printStackTrace() –RemoteException.printStackTrace() –Hard-coded path (/log/output.log) –Código nativo

Fábrica de Software Desenvolvendo Programas Puros Linhas guias (cont.) –Prioridades de Threads –Tamanho e posição diretamente de componentes visuais –Method.invoke() –AWT Peer classes ao invés das interfaces AWT –System.exit(), System.in, System.out

Fábrica de Software Desenvolvendo Programas Puros Linhas guias (cont.) –Drives JDBC (drive é portável?) –Terminador de linha (\n, \r\n, …) –Processamento da linha de comando –Internacionalização –Unicode –…

Fábrica de Software Execução do JavaPureCheck Input

Fábrica de Software Execução do JavaPureCheck Check

Fábrica de Software Execução do JavaPureCheck Analyse

Fábrica de Software Execução do JavaPureCheck Warning

Fábrica de Software Execução do JavaPureCheck Error

Fábrica de Software Execução do JavaPureCheck Relatório

Fábrica de Software Conclusões e Trabalhos Futuros Grande suporte para o controle de qualidade de código Pouco suporte para o controle de qualidade do projeto Nenhum suporte para as outras atividades Auditoria do código do Radix Mapeamento de problemas em refactorings

Fábrica de Software Referências java.sun.com/100percent/index.html

Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha