defect prevention software

Upload: zarko-acimovic

Post on 03-Apr-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/28/2019 Defect Prevention Software

    1/8

    DEFECT PREVENTION SOFTWARE

    Tools for static analysis of source code: PMD Marker,

    FindBugs, Metrics Marker

    Tools for determining software quality metrics for source

    code: VizzMaintenance

    Tools for UML design critics: ArgoUML

    Tools for generating test cases from UML model of your code:

    Smartesting

    See static analysis report sample and software quality metrics

    for sample class on following pages

  • 7/28/2019 Defect Prevention Software

    2/8

    Here is sample CommaHyphenString.java source code

    1 /**

    2 *

    3 * CommaHyphenString parses .properties file. It eliminates commas or low lines

    4 * from .properties file so items in it( such as categories) could be properly

    5 * showed on screen

    6 */7 import java.util.*;

    8

    9 publicclass CommaHyphenString {

    10

    11 //String s;

    12 int lastIndex;

    13 CommaHyphenString(){}

    14

    15

    16 /** Eliminates commas, returns array of strings with low line17 * @return String[]

    18 */

    19 String[] getWithLowLine(String s) {

    20 int lastIndex = defineLast(s);

    21 if(lastIndex==0){

    22 String[] ss = newString[1];

    23 ss[0] = s;

    24 return ss;

    25 } else {

    26 int start = -1;

    27 Vector v = newVector();28 int current = s.indexOf(',');

    29 do {

    30 v.addElement(s.substring(start+1,current));

    31 start = current;

    32 current = s.indexOf(',',current+1);

    33 } while (start!=lastIndex);

    34

    35 String[] ss = newString[v.size()+1];

    36 for(int i=0; i

  • 7/28/2019 Defect Prevention Software

    3/8

    39 ss[v.size()] = s.substring(lastIndex+1,s.length());

    40 return ss;

    41 }

    42 }

    43

    44 /** Eliminates low line

    45 * @return String[]

    46 */47 String[] getStringsOnly(String s){

    48 String[] temp = this.getWithLowLine(s);

    49 for (int i=0; i

  • 7/28/2019 Defect Prevention Software

    4/8

    79 publicintdefineLast(String s){

    80 int lastIndex = 0;

    81 char c[] = s.toCharArray();

    82 for (int i=0; i

  • 7/28/2019 Defect Prevention Software

    5/8

    Parameter 's' is not assigned and could be declared final 47 PMD Marker

    Use explicit scoping instead of the default package private level 47 PMD Marker

    Avoid using if statements without curly braces 53 PMD Marker

    CommaHyphenString.getStringsOnly(String) concatenates strings using + in a loop 54 FindBugs

    Prefer StringBuffer over += for concatenating strings 54 PMD Marker

    Parameter 's' is not assigned and could be declared final 65 PMD Marker

    Use explicit scoping instead of the default package private level 65 PMD Marker

    Parameter 's' is not assigned and could be declared final 72 PMD MarkerUse explicit scoping instead of the default package private level 72 PMD Marker

    Parameter 's' is not assigned and could be declared final 79 PMD Marker

    Local variable 'c' could be declared final 81 PMD Marker

    Avoid using if statements without curly braces 83 PMD Marker

    Here are VizzMaintenance software quality metrics for CommaHyphenString.java class

    Class Name Maintainability CBO CYC_Classes DAC DIT ILCOM LCOM LD LEN LOC LOD_Class MPC NAM NOC NOM

    CommaHyphenString 0,136637872 0 1 0 0 0 25 0 17 80 0,167 0 6 0 5

  • 7/28/2019 Defect Prevention Software

    6/8

    Here are full names of VizzMaintenance software quality metrics (click on links for details)

    Complexity

    o Size

    Lines of Code (LOC)

    o Interface Complexity

    Number of Attributes and Methods (SIZE2)

    Number Of local Methods (NOM)

    o Structural Complexity

    McCabe Cyclomatic Complexity (CC)

    Weighted Method Count (WMC)

    Response For a Class (RFC)

    Architecture and Structure

    o Inheritance

    Depth of Inheritance Tree (DIT)

    Number Of Children (NOC)

    o Coupling

    o Afferent Coupling (Ca)

    http://www.arisa.se/compendium/node89.htmlhttp://www.arisa.se/compendium/node89.htmlhttp://www.arisa.se/compendium/node90.htmlhttp://www.arisa.se/compendium/node90.htmlhttp://www.arisa.se/compendium/node91.htmlhttp://www.arisa.se/compendium/node91.htmlhttp://www.arisa.se/compendium/node92.htmlhttp://www.arisa.se/compendium/node92.htmlhttp://www.arisa.se/compendium/node93.htmlhttp://www.arisa.se/compendium/node93.htmlhttp://www.arisa.se/compendium/node94.htmlhttp://www.arisa.se/compendium/node94.htmlhttp://www.arisa.se/compendium/node95.htmlhttp://www.arisa.se/compendium/node95.htmlhttp://www.arisa.se/compendium/node96.htmlhttp://www.arisa.se/compendium/node96.htmlhttp://www.arisa.se/compendium/node97.htmlhttp://www.arisa.se/compendium/node97.htmlhttp://www.arisa.se/compendium/node98.htmlhttp://www.arisa.se/compendium/node98.htmlhttp://www.arisa.se/compendium/node99.htmlhttp://www.arisa.se/compendium/node99.htmlhttp://www.arisa.se/compendium/node100.htmlhttp://www.arisa.se/compendium/node100.htmlhttp://www.arisa.se/compendium/node101.htmlhttp://www.arisa.se/compendium/node101.htmlhttp://www.arisa.se/compendium/node102.htmlhttp://www.arisa.se/compendium/node102.htmlhttp://www.arisa.se/compendium/node103.htmlhttp://www.arisa.se/compendium/node103.htmlhttp://www.arisa.se/compendium/node104.htmlhttp://www.arisa.se/compendium/node104.htmlhttp://www.arisa.se/compendium/node104.htmlhttp://www.arisa.se/compendium/node103.htmlhttp://www.arisa.se/compendium/node102.htmlhttp://www.arisa.se/compendium/node101.htmlhttp://www.arisa.se/compendium/node100.htmlhttp://www.arisa.se/compendium/node99.htmlhttp://www.arisa.se/compendium/node98.htmlhttp://www.arisa.se/compendium/node97.htmlhttp://www.arisa.se/compendium/node96.htmlhttp://www.arisa.se/compendium/node95.htmlhttp://www.arisa.se/compendium/node94.htmlhttp://www.arisa.se/compendium/node93.htmlhttp://www.arisa.se/compendium/node92.htmlhttp://www.arisa.se/compendium/node91.htmlhttp://www.arisa.se/compendium/node90.htmlhttp://www.arisa.se/compendium/node89.html
  • 7/28/2019 Defect Prevention Software

    7/8

    Coupling Between Objects (CBO)

    Change Dependency Between Classes (CDBC)

    Change Dependency Of Classes (CDOC)

    Efferent Coupling (Ce)

    Coupling Factor (CF)

    Data Abstraction Coupling (DAC)

    Instability (I)

    Locality of Data (LD)

    Message Passing Coupling (MPC)

    Package Data Abstraction Coupling (PDAC)

    o Cohesion

    Lack of Cohesion in Methods (LCOM)

    Improvement of LCOM (ILCOM)

    Tight Class Cohesion (TCC)

    Design Guidelines and Code Conventions

    o Documentation

    Lack Of Documentation (LOD)

    o Code Conventions

    http://www.arisa.se/compendium/node105.htmlhttp://www.arisa.se/compendium/node105.htmlhttp://www.arisa.se/compendium/node106.htmlhttp://www.arisa.se/compendium/node106.htmlhttp://www.arisa.se/compendium/node107.htmlhttp://www.arisa.se/compendium/node107.htmlhttp://www.arisa.se/compendium/node108.htmlhttp://www.arisa.se/compendium/node108.htmlhttp://www.arisa.se/compendium/node109.htmlhttp://www.arisa.se/compendium/node109.htmlhttp://www.arisa.se/compendium/node110.htmlhttp://www.arisa.se/compendium/node110.htmlhttp://www.arisa.se/compendium/node111.htmlhttp://www.arisa.se/compendium/node111.htmlhttp://www.arisa.se/compendium/node112.htmlhttp://www.arisa.se/compendium/node112.htmlhttp://www.arisa.se/compendium/node113.htmlhttp://www.arisa.se/compendium/node113.htmlhttp://www.arisa.se/compendium/node114.htmlhttp://www.arisa.se/compendium/node114.htmlhttp://www.arisa.se/compendium/node115.htmlhttp://www.arisa.se/compendium/node115.htmlhttp://www.arisa.se/compendium/node116.htmlhttp://www.arisa.se/compendium/node116.htmlhttp://www.arisa.se/compendium/node117.htmlhttp://www.arisa.se/compendium/node117.htmlhttp://www.arisa.se/compendium/node118.htmlhttp://www.arisa.se/compendium/node118.htmlhttp://www.arisa.se/compendium/node119.htmlhttp://www.arisa.se/compendium/node119.htmlhttp://www.arisa.se/compendium/node120.htmlhttp://www.arisa.se/compendium/node120.htmlhttp://www.arisa.se/compendium/node121.htmlhttp://www.arisa.se/compendium/node121.htmlhttp://www.arisa.se/compendium/node122.htmlhttp://www.arisa.se/compendium/node122.htmlhttp://www.arisa.se/compendium/node122.htmlhttp://www.arisa.se/compendium/node121.htmlhttp://www.arisa.se/compendium/node120.htmlhttp://www.arisa.se/compendium/node119.htmlhttp://www.arisa.se/compendium/node118.htmlhttp://www.arisa.se/compendium/node117.htmlhttp://www.arisa.se/compendium/node116.htmlhttp://www.arisa.se/compendium/node115.htmlhttp://www.arisa.se/compendium/node114.htmlhttp://www.arisa.se/compendium/node113.htmlhttp://www.arisa.se/compendium/node112.htmlhttp://www.arisa.se/compendium/node111.htmlhttp://www.arisa.se/compendium/node110.htmlhttp://www.arisa.se/compendium/node109.htmlhttp://www.arisa.se/compendium/node108.htmlhttp://www.arisa.se/compendium/node107.htmlhttp://www.arisa.se/compendium/node106.htmlhttp://www.arisa.se/compendium/node105.html
  • 7/28/2019 Defect Prevention Software

    8/8

    Follow me on Facebook page

    https://www.facebook.com/AutomatedTesting

    https://www.facebook.com/AutomatedTestinghttps://www.facebook.com/AutomatedTestinghttps://www.facebook.com/AutomatedTesting