visual studio tips and tricks code metrics zain naboulsi sr. developer evangelist microsoft email:...
TRANSCRIPT
![Page 1: Visual Studio Tips and Tricks Code Metrics Zain Naboulsi Sr. Developer Evangelist Microsoft Email: zainnab@microsoft.com Twitter: @zainnab Blog: blogs.msdn.com](https://reader031.vdocuments.us/reader031/viewer/2022032516/56649c755503460f9492884b/html5/thumbnails/1.jpg)
Visual StudioTips and Tricks
Code Metrics
Zain Naboulsi
Sr. Developer Evangelist
Microsoft
Email:[email protected]:@zainnab
Blog:blogs.msdn.com/
zainnab
![Page 2: Visual Studio Tips and Tricks Code Metrics Zain Naboulsi Sr. Developer Evangelist Microsoft Email: zainnab@microsoft.com Twitter: @zainnab Blog: blogs.msdn.com](https://reader031.vdocuments.us/reader031/viewer/2022032516/56649c755503460f9492884b/html5/thumbnails/2.jpg)
![Page 3: Visual Studio Tips and Tricks Code Metrics Zain Naboulsi Sr. Developer Evangelist Microsoft Email: zainnab@microsoft.com Twitter: @zainnab Blog: blogs.msdn.com](https://reader031.vdocuments.us/reader031/viewer/2022032516/56649c755503460f9492884b/html5/thumbnails/3.jpg)
Code MetricsWhat are they?
Why should I care?
Lines of Code (LOC)
Cyclomatic Complexity
Class Coupling / Coupling Between Objects (CBO)
Depth of Inheritance Tree (DIT)
Maintainability Index
Using the Tool Window
![Page 4: Visual Studio Tips and Tricks Code Metrics Zain Naboulsi Sr. Developer Evangelist Microsoft Email: zainnab@microsoft.com Twitter: @zainnab Blog: blogs.msdn.com](https://reader031.vdocuments.us/reader031/viewer/2022032516/56649c755503460f9492884b/html5/thumbnails/4.jpg)
What are they?
“[…]a measure of some property of a piece of software or its specifications […]”http://en.wikipedia.org/wiki/Software_metric
“[…] a set of software measures […]”http://msdn.microsoft.com/en-us/library/bb385914.aspx
![Page 5: Visual Studio Tips and Tricks Code Metrics Zain Naboulsi Sr. Developer Evangelist Microsoft Email: zainnab@microsoft.com Twitter: @zainnab Blog: blogs.msdn.com](https://reader031.vdocuments.us/reader031/viewer/2022032516/56649c755503460f9492884b/html5/thumbnails/5.jpg)
Why should I care?
Find those areas that are (statistically) more likely to produce problems
Determine where to focus limited resources
Understand the current state of a solution / project
Keep track of where we have been and where we are going
![Page 6: Visual Studio Tips and Tricks Code Metrics Zain Naboulsi Sr. Developer Evangelist Microsoft Email: zainnab@microsoft.com Twitter: @zainnab Blog: blogs.msdn.com](https://reader031.vdocuments.us/reader031/viewer/2022032516/56649c755503460f9492884b/html5/thumbnails/6.jpg)
Lines of Code (LOC)
Basic InfoRaw count of IL linesNot a good measure by itself
StatsN/A when used alone
Code AnalysisN/A
http://academic.research.microsoft.com/Paper/2101790.aspx
![Page 7: Visual Studio Tips and Tricks Code Metrics Zain Naboulsi Sr. Developer Evangelist Microsoft Email: zainnab@microsoft.com Twitter: @zainnab Blog: blogs.msdn.com](https://reader031.vdocuments.us/reader031/viewer/2022032516/56649c755503460f9492884b/html5/thumbnails/7.jpg)
Cyclomatic ComplexityBasic Info
Count of decisionsMore decisions means more errorsUsed often with LOC
Stats10 Suggested upper limit
Code AnalysisCA150225 Upper limit
http://www.mccabe.com/pdf/mccabe-nist235r.pdf
![Page 8: Visual Studio Tips and Tricks Code Metrics Zain Naboulsi Sr. Developer Evangelist Microsoft Email: zainnab@microsoft.com Twitter: @zainnab Blog: blogs.msdn.com](https://reader031.vdocuments.us/reader031/viewer/2022032516/56649c755503460f9492884b/html5/thumbnails/8.jpg)
Depth of Inheritance (DIT)Basic Info
The maximum length from the node to the root of the inheritance treeThree assumptions
Deeper == harder to predict behaviorDeeper == greater design complexityDeeper == more reuse of code
StatsLow
Less complexLess reuse of code
HighMore complexMore reuse of code
5 or 6 for upper limit
Code AnalysisCA1501 http://www.pitt.edu/~ckemerer/CK%20research%20papers/MetricFor
OOD_ChidamberKemerer94.pdf
![Page 9: Visual Studio Tips and Tricks Code Metrics Zain Naboulsi Sr. Developer Evangelist Microsoft Email: zainnab@microsoft.com Twitter: @zainnab Blog: blogs.msdn.com](https://reader031.vdocuments.us/reader031/viewer/2022032516/56649c755503460f9492884b/html5/thumbnails/9.jpg)
Class Coupling / Coupling Between Objects (CBO)
Basic InfoNumber of classes a single class uses
Stats9Upper limit
Code AnalysisCA150680 for class30 for method
http://www.pitt.edu/~ckemerer/CK%20research%20papers/MetricForOOD_ChidamberKemerer94.pdf
![Page 10: Visual Studio Tips and Tricks Code Metrics Zain Naboulsi Sr. Developer Evangelist Microsoft Email: zainnab@microsoft.com Twitter: @zainnab Blog: blogs.msdn.com](https://reader031.vdocuments.us/reader031/viewer/2022032516/56649c755503460f9492884b/html5/thumbnails/10.jpg)
Maintainability IndexBasic Info
Calculates an index value between 0 and 100 that represents the relative ease of maintaining the code
StatsHigh == goodLow == badRatings
Green (20 – 100)Yellow (10 – 19)Red (0 – 9)
Code AnalysisCA150519 or lower threshold
![Page 11: Visual Studio Tips and Tricks Code Metrics Zain Naboulsi Sr. Developer Evangelist Microsoft Email: zainnab@microsoft.com Twitter: @zainnab Blog: blogs.msdn.com](https://reader031.vdocuments.us/reader031/viewer/2022032516/56649c755503460f9492884b/html5/thumbnails/11.jpg)
Using the Tool Window
![Page 12: Visual Studio Tips and Tricks Code Metrics Zain Naboulsi Sr. Developer Evangelist Microsoft Email: zainnab@microsoft.com Twitter: @zainnab Blog: blogs.msdn.com](https://reader031.vdocuments.us/reader031/viewer/2022032516/56649c755503460f9492884b/html5/thumbnails/12.jpg)