Mastering Code Analysis Metrics for ALM (Hugh Wood)

Post on 13-Apr-2017

458 views 1 download

transcript

Mastering code analysis metrics for ALMSharePoint Konferenz ErdingHugh Wood – Master Chief – Rencore AB - @HughAJWood

@HughAJWoodhttps//blog.spcaf.com Hugh.Wood@Rencore.se

Hugh WoodLeicester, EnglandLead Developer @ SPCAFMastering code analysis metrics for ALM - @HughAJWood

•What are they?•Who are they important to?•Where do they come from?•Looking deeper…

Static Code Analysis Metrics

Mastering code analysis metrics for ALM - @HughAJWood

What are they?

Mastering code analysis metrics for ALM - @HughAJWood

Who are they important to?

Mastering code analysis metrics for ALM - @HughAJWood

Developer

Architect

Project Manager

Business

Where do they come from?

Mastering code analysis metrics for ALM - @HughAJWood

FxCop

StyleCop

Digging deeper…

Mastering code analysis metrics for ALM - @HughAJWood

Visual Studio Metrics

Mastering code analysis metrics for ALM - @HughAJWood

Developer Friendly

Visual Studio Metrics

Mastering code analysis metrics for ALM - @HughAJWood

Developer Friendly

Visual Studio Metrics

Mastering code analysis metrics for ALM - @HughAJWood

Developer Friendly

Visual Studio Metrics

Mastering code analysis metrics for ALM - @HughAJWood

Architect Friendly

Visual Studio Metrics

Mastering code analysis metrics for ALM - @HughAJWood

Architect Friendly

Cyclomatic Complexity Density Ratio: (CC)11 / (LOC)21 = 0.5Class Coupling – Use DirectlyDepth Inheritance – Use DirectlyMaintainability Index – Use Directly

Visual Studio Metrics

Mastering code analysis metrics for ALM - @HughAJWood

Project Manager Friendly

Cyclomatic Complexity Density Ratio: (CC)11 / (LOC)21 = 0.5Maintainability Index – Use Directly

Visual Studio Metrics

Mastering code analysis metrics for ALM - @HughAJWood

Business FriendlyProject Complexity: (CC)11 / (LOC)21 = 0.5 x 100 = 50%

25% < Simple50% < Moderate70% < Complex71% > Unsupportable

Maintainability Index – Use Directly< 25% Expensive to maintain26~50% Moderately Expensive51~70% Low Expenditure71%+ Extremely Low Expenditure

Metrics outside ofVisual Studio

Mastering code analysis metrics for ALM - @HughAJWood

• Quality Metrics• Security Metrics• Research & Development metrics

Code Quality Metrics

Mastering code analysis metrics for ALM - @HughAJWood

• Defect Density (High/Medium per 1000 LOC)• Critical Defects / 1000 LOC• Uninspected Defects

Code Quality Metrics

Mastering code analysis metrics for ALM - @HughAJWood

What are Defects?

Code Quality Metrics

Mastering code analysis metrics for ALM - @HughAJWood

What are Defects?

Code Quality Metrics

Mastering code analysis metrics for ALM - @HughAJWood

What are Defects?

Code Quality Metrics

Mastering code analysis metrics for ALM - @HughAJWood

What are Defects?

Code Security Metrics

Mastering code analysis metrics for ALM - @HughAJWood

• Information Security• System Security – System and Web

Research & DevelopmentEfficiency

Mastering code analysis metrics for ALM - @HughAJWood

• Cyclomatic Complexity• Comment Density

Policies & Thresholds

Mastering code analysis metrics for ALM - @HughAJWood

• ISO-9000 / ISO-27001• Defect limits• Developer Vectors• Defect Contingency• Development Language Segregation

Policies & Thresholds

Mastering code analysis metrics for ALM - @HughAJWood

• Assign a Defect Lead• Ignore only false positives• Use custom rule sets• Monitor and track all exceptions

Managing False Positives

Adjusting Project Plans

Mastering code analysis metrics for ALM - @HughAJWood

• Size of Code Base• Outstanding Defects• Number of Developers• Defects Per Developer by Category• Time to Inspect Defects (Average)• Time Scheduled per week for triage per Developer• Weeks until project completion

Adjusting Project Plans

Mastering code analysis metrics for ALM - @HughAJWood

Measure Defects and Metrics Over Time

Summary

Mastering code analysis metrics for ALM - @HughAJWood

• Ensure Defect and Metric policies are in place• Delegate the responsibility for collating data to a developer• Use code quality tools to keep records of progress• Use gathered metrics to inform Business• Decide on course of action and plan

Mastering code analysis metrics for ALM - @HughAJWood