Verktyg fr statisk kodanalys Statisk kodanalys Inledning Verktyg

  • Slides: 25
Download presentation
Verktyg för statisk kodanalys

Verktyg för statisk kodanalys

Statisk kodanalys �Inledning �Verktyg och utvärdering �Metriker �Resultatanalys �Avslutning

Statisk kodanalys �Inledning �Verktyg och utvärdering �Metriker �Resultatanalys �Avslutning

Statisk kodanalys �Inledning � Vad är statisk kodanalys? � Exempel på statisk kodanalys �

Statisk kodanalys �Inledning � Vad är statisk kodanalys? � Exempel på statisk kodanalys � Mål � Avgränsningar � CRM �Verktyg och utvärdering �Metriker �Resultatanalys �Avslutning

Vad är statisk kodanalys? Syfte: Att förbättra källkod. Utvecklat som en lösning på: �Inkonsekvent

Vad är statisk kodanalys? Syfte: Att förbättra källkod. Utvecklat som en lösning på: �Inkonsekvent dokumentation och namngivning �Krångliga relationer och designval �Hög komplexitet

Exempel på Statisk Kodanalys �Minnesluckor �Relationer mellan klasser �Duplicerad kod �Stil �Metriker �Med mera

Exempel på Statisk Kodanalys �Minnesluckor �Relationer mellan klasser �Duplicerad kod �Stil �Metriker �Med mera

Mål �Identifiera och utvärdera relevanta verktyg som finns för statisk kodanalys. �Analysera verktygens resultat

Mål �Identifiera och utvärdera relevanta verktyg som finns för statisk kodanalys. �Analysera verktygens resultat för en applikation och spekulera över den konkreta nyttan av statisk kodanalys.

Avgränsningar �Kod som analyseras skall vara skriven i Java. �Endast verktyg som är gratis

Avgränsningar �Kod som analyseras skall vara skriven i Java. �Endast verktyg som är gratis företag betraktas. �Endast verktyg som stödjer operativsystemen Windows, OS X och/eller Linux skall utvärderas.

CRM �CRM, Customer Relationship Management �En applikation skapad av Java Solutions �Skriven i Java

CRM �CRM, Customer Relationship Management �En applikation skapad av Java Solutions �Skriven i Java �Bas för all statisk kodanalys i detta projekt

Statisk kodanalys �Inledning �Verktyg och utvärdering � Arbetsmetod för val av verktyg � Utvärderingskriterier

Statisk kodanalys �Inledning �Verktyg och utvärdering � Arbetsmetod för val av verktyg � Utvärderingskriterier � Lista över verktyg som analyserats �Metriker �Resultatanalys �Avslutning

Arbetsmetod för val av verktyg �Vilka resurser finns? �Vilka metoder finns? �Varför valdes metoden?

Arbetsmetod för val av verktyg �Vilka resurser finns? �Vilka metoder finns? �Varför valdes metoden? �Hur utfördes urvalet?

Utvärderingskriterier �Dokumentation �Installation �Konfiguration �Användarvänlighet �Funktionalitet

Utvärderingskriterier �Dokumentation �Installation �Konfiguration �Användarvänlighet �Funktionalitet

Lista över verktyg som analyserats Övrigt Statistik Design Checkstyle Source. Monitor Sonar. J Hammurapi

Lista över verktyg som analyserats Övrigt Statistik Design Checkstyle Source. Monitor Sonar. J Hammurapi Eclipse Metrics ispace Find. Bugs CAP Lint 4 J JDepend JNorm PMD

Statisk kodanalys �Inledning �Verktyg och utvärdering �Metriker �Cyclomatic complexity �Resultatanalys �Avslutning

Statisk kodanalys �Inledning �Verktyg och utvärdering �Metriker �Cyclomatic complexity �Resultatanalys �Avslutning

Metriker �Statistik/data över en viss egenskap hos källkod �Kräver korrekt tolkning Klass Metrikvärde Class

Metriker �Statistik/data över en viss egenskap hos källkod �Kräver korrekt tolkning Klass Metrikvärde Class 3 17 Klass Metrikvärde Class 1 3 Class 2 1 Class 3 17 Class 4 5 Class 5 4 ? ? Värde över normen!

Cyclomatic complexity �Utvecklad av Thomas J. Mc. Cabe 1976 �Mått på komplexitet hos kod

Cyclomatic complexity �Utvecklad av Thomas J. Mc. Cabe 1976 �Mått på komplexitet hos kod �Räknas ut genom ett flödesschema M = E – N + 2 P M = cyclomatic complexity E = antalet bågar i grafen N = antalet noder i grafen P = antalet komponenter

Cyclomatic complexity Statement while(condition x) statement If(condition y) statement

Cyclomatic complexity Statement while(condition x) statement If(condition y) statement

Statisk kodanalys �Inledning �Verktyg och utvärdering �Metriker �Resultatanalys �Utvärdering: metriker �Utvärdering: övrigt �Avslutning

Statisk kodanalys �Inledning �Verktyg och utvärdering �Metriker �Resultatanalys �Utvärdering: metriker �Utvärdering: övrigt �Avslutning

Resultatanalys Utvärdering av: �Metriker i verktyg �Övrigt funktionalitet i verktyg

Resultatanalys Utvärdering av: �Metriker i verktyg �Övrigt funktionalitet i verktyg

Utvärdering: metriker Utvärderade metriker: �Distance from main sequence �Cyclomatic complexity �Lack of cohesion �Feature

Utvärdering: metriker Utvärderade metriker: �Distance from main sequence �Cyclomatic complexity �Lack of cohesion �Feature envy �Branches �Depth

Utvärdering: Övrigt Genrer klassificerade av verktygs funktionalitet: �Kodstil och benämning �Dokumentation �Optimering �Buggfixning �Kod-design

Utvärdering: Övrigt Genrer klassificerade av verktygs funktionalitet: �Kodstil och benämning �Dokumentation �Optimering �Buggfixning �Kod-design

Statisk kodanalys �Inledning �Verktyg och utvärdering �Metriker �Resultatanalys �Avslutning �Sammanfattning �Mål �Vidare undersökningar

Statisk kodanalys �Inledning �Verktyg och utvärdering �Metriker �Resultatanalys �Avslutning �Sammanfattning �Mål �Vidare undersökningar

Sammanfattning �Insamling av verktyg �Utvärdering av verktyg �Statisk kodanalys �Analys av resultat

Sammanfattning �Insamling av verktyg �Utvärdering av verktyg �Statisk kodanalys �Analys av resultat

Mål �Utvärdera verktyg som finns för statisk analys och deras resultat. �Visa om statisk

Mål �Utvärdera verktyg som finns för statisk analys och deras resultat. �Visa om statisk analys är meningsfullt och relevant i dagsläget, och för vem. �Identifiera och utvärdera relevanta verktyg som finns för statisk kodanalys. �Analysera verktygens resultat för en applikation och spekulera över den konkreta nyttan av statisk kodanalys.

Vidare undersökningar �Empiriska undersökningar �Följa ett företag över tid? �Två problem: �Behöver isolera effekterna

Vidare undersökningar �Empiriska undersökningar �Följa ett företag över tid? �Två problem: �Behöver isolera effekterna av statisk kodanalys. �Behöver jämföra kod med kod och avgöra vilken som är överlägsen. �Lösning: �Undersöka bieffekter av statisk kodanalys �Undersöka ett stort antal företag för att få ett genomsnitt.

Opposition

Opposition