Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.
-
Upload
natalia-santo -
Category
Documents
-
view
230 -
download
0
Transcript of Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.
![Page 1: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/1.jpg)
Fábrica de Software
Ferramentas para Auditoria de Ferramentas para Auditoria de CódigoCódigo
Eduardo Aranha
![Page 2: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/2.jpg)
Fábrica de Software
Ferramentas para Auditoria Ferramentas para Auditoria de Códigode Código• Metamata Audit
• Metamata Metrics
• JavaPureCheck
![Page 3: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/3.jpg)
Fábrica de Software
Ferramentas para Auditoria Ferramentas para Auditoria de Códigode 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
![Page 4: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/4.jpg)
Fábrica de Software
Métricas utilizadas na Métricas utilizadas na ferramenta Metamata Auditferramenta 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 <nome-pacote>.*
![Page 5: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/5.jpg)
Fábrica de Software
Métricas utilizadas na Métricas utilizadas na ferramenta Metamata Auditferramenta 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;
![Page 6: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/6.jpg)
Fábrica de Software
Métricas utilizadas na Métricas utilizadas na ferramenta Metamata Auditferramenta Metamata Audit• class Carro extends Veiculo { ... }
Carro car; ... ; if (car instanceof Veiculo) ...Veiculo v; ... ; if (v instanceof Carro) ...
• i = j = 3 + 4;• i = j++ + 10 ; ... ; i = (j = 5) + 1;• int sum(i) { ... ; i++ ; ... } ...; sum(n)• for (int i = 0 ; ...; i++) { ... ; i = 10 ; ... }
![Page 7: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/7.jpg)
Fábrica de Software
Métricas utilizadas na Métricas utilizadas na ferramenta Metamata Auditferramenta 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 { ... }
![Page 8: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/8.jpg)
Fábrica de Software
Métricas utilizadas na Métricas utilizadas na ferramenta Metamata Auditferramenta 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
![Page 9: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/9.jpg)
Fábrica de Software
Métricas utilizadas na Métricas utilizadas na ferramenta Metamata Auditferramenta Metamata Audit• Métodos sincronizados
synchronized void do() { ... } void do() {synchronized (this) { ... } }Vantagens:– Legibilidade (+ de 1 sync.), redefinição,
depuraçãoDesvantagens:– Eficiência de alguns compiladores
![Page 10: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/10.jpg)
Fábrica de Software
Métricas utilizadas na Métricas utilizadas na ferramenta Metamata Auditferramenta 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
![Page 11: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/11.jpg)
Fábrica de Software
Métricas utilizadas na Métricas utilizadas na ferramenta Metamata Auditferramenta 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) { ... }
![Page 12: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/12.jpg)
Fábrica de Software
Métricas utilizadas na Métricas utilizadas na ferramenta Metamata Auditferramenta 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
![Page 13: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/13.jpg)
Fábrica de Software
Métricas utilizadas na Métricas utilizadas na ferramenta Metamata Auditferramenta Metamata Audit• class SuperClass {
private void f(Vector v) {...} }
class SubClass extends SuperClass {
private void f(Vector v) {...} }
![Page 14: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/14.jpg)
Fábrica de Software
Métricas utilizadas na Métricas utilizadas na ferramenta Metamata Auditferramenta Metamata Audit• class SuperClass {
void f(Vector v) {...} }
class SubClass extends SuperClass {
abstract void f(Vector v); }
![Page 15: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/15.jpg)
Fábrica de Software
Métricas utilizadas na Métricas utilizadas na ferramenta Metamata Auditferramenta Metamata Audit• class SuperClass { void f(int i) {...}
void f(Vector v) {...} }
class SubClass extends SuperClass {
void f(double d) {...} }
![Page 16: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/16.jpg)
Fábrica de Software
Métricas utilizadas na Métricas utilizadas na ferramenta Metamata Auditferramenta 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); } }
![Page 17: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/17.jpg)
Fábrica de Software
Métricas utilizadas na Métricas utilizadas na ferramenta Metamata Auditferramenta Metamata Audit• switch (exp) {
case 1: ...case 2: ......case 256: ...case 257: ...
}
![Page 18: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/18.jpg)
Fábrica de Software
Métricas utilizadas na Métricas utilizadas na ferramenta Metamata Auditferramenta Metamata Audit• class MyClass {
static void do() { ... }}
class MyClass2 {void f() { MyClass c = ... ; ... ;
c.do(); }}
![Page 19: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/19.jpg)
Fábrica de Software
Métricas utilizadas na Métricas utilizadas na ferramenta Metamata Auditferramenta Metamata Audit• class MyClass {
static int valor;static void init(int i) { valor = i; }}
class MyClass2 {static int valor2 = MyClass.valor + 2;}
![Page 20: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/20.jpg)
Fábrica de Software
Ferramentas para Auditoria Ferramentas para Auditoria de Códigode 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
![Page 21: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/21.jpg)
Fábrica de Software
Métricas utilizadas no Métricas utilizadas no Metamata MetricsMetamata Metrics• V(G)
– Número de caminhos possíveis de execução em um código
– Complexidade– Comandos while, if, for, switch
![Page 22: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/22.jpg)
Fábrica de Software
Métricas utilizadas no Métricas utilizadas no Metamata MetricsMetamata 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
![Page 23: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/23.jpg)
Fábrica de Software
Métricas utilizadas no Métricas utilizadas no Metamata MetricsMetamata Metrics• DIT
– Profundidade de hierarquias de classes– Interfaces e classe Object: profundidade 1– Outras classes: 1 + profundidade da superclasse
![Page 24: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/24.jpg)
Fábrica de Software
Métricas utilizadas no Métricas utilizadas no Metamata MetricsMetamata Metrics• NOA
– Números de atributos declarados em uma classe– Quanto maior o estado, maior a dificuldade de
• manter invariantes• entendimento
![Page 25: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/25.jpg)
Fábrica de Software
Métricas utilizadas no Métricas utilizadas no Metamata MetricsMetamata 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
![Page 26: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/26.jpg)
Fábrica de Software
Métricas utilizadas no Métricas utilizadas no Metamata MetricsMetamata 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
![Page 27: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/27.jpg)
Fábrica de Software
Métricas utilizadas no Métricas utilizadas no Metamata MetricsMetamata 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
![Page 28: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/28.jpg)
Fábrica de Software
Métricas utilizadas no Métricas utilizadas no Metamata MetricsMetamata 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
![Page 29: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/29.jpg)
Fábrica de Software
Métricas utilizadas no Métricas utilizadas no Metamata MetricsMetamata 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
![Page 30: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/30.jpg)
Fábrica de Software
Métricas utilizadas no Métricas utilizadas no Metamata MetricsMetamata 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
![Page 31: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/31.jpg)
Fábrica de Software
Métricas utilizadas no Métricas utilizadas no Metamata MetricsMetamata 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
![Page 32: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/32.jpg)
Fábrica de Software
Ferramentas para Auditoria Ferramentas para Auditoria de Códigode 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
![Page 33: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/33.jpg)
Fábrica de Software
Desenvolvendo Programas Desenvolvendo Programas PurosPuros• Linhas guias
– Runtime.exec()– Class.forName() (warning)– ClassNotFoundException.printStackTrace()– RemoteException.printStackTrace()– Hard-coded path (/log/output.log)– Código nativo
![Page 34: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/34.jpg)
Fábrica de Software
Desenvolvendo Programas Desenvolvendo Programas PurosPuros• 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
![Page 35: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/35.jpg)
Fábrica de Software
Desenvolvendo Programas Desenvolvendo Programas PurosPuros• Linhas guias (cont.)
– Drives JDBC (drive é portável?)– Terminador de linha (\n, \r\n, …)– Processamento da linha de comando– Internacionalização– Unicode– …
![Page 36: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/36.jpg)
Fábrica de Software
Execução do Execução do JavaPureCheckJavaPureCheck• Input
![Page 37: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/37.jpg)
Fábrica de Software
Execução do Execução do JavaPureCheckJavaPureCheck• Check
![Page 38: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/38.jpg)
Fábrica de Software
Execução do Execução do JavaPureCheckJavaPureCheck• Analyse
![Page 39: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/39.jpg)
Fábrica de Software
Execução do Execução do JavaPureCheckJavaPureCheck• Warning
![Page 40: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/40.jpg)
Fábrica de Software
Execução do Execução do JavaPureCheckJavaPureCheck• Error
![Page 41: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/41.jpg)
Fábrica de Software
Execução do Execução do JavaPureCheckJavaPureCheck• Relatório
![Page 42: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/42.jpg)
Fábrica de Software
Conclusões e Trabalhos Conclusões e Trabalhos FuturosFuturos• 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
![Page 43: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/43.jpg)
Fábrica de Software
ReferênciasReferências
• www.metamata.com• www.metamata.com/audit.html• www.metamata.com/metrics.html• www.javasoft.com• java.sun.com/100percent/index.html
![Page 44: Fábrica de Software Ferramentas para Auditoria de Código Eduardo Aranha.](https://reader033.fdocuments.net/reader033/viewer/2022051223/570638481a28abb8238f4065/html5/thumbnails/44.jpg)
Fábrica de Software
Ferramentas para Auditoria de Ferramentas para Auditoria de CódigoCódigo
Eduardo Aranha