![Page 1: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/1.jpg)
Code Quality AssuranceFH Technikum Wien, April 2013
Peter Kofler, ‘Code Cop’@codecopkofler
www.code-cop.org
Copyright Peter Kofler, licensed under CC-BY.
![Page 2: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/2.jpg)
![Page 3: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/3.jpg)
Peter Kofler
• Ph.D. (Appl. Math.)
• Professional SoftwareDeveloper for 14 years
• Lead Developer at IBM
• “fanatic about code quality”
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 4: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/4.jpg)
The opinions expressed here are my own and do not necessarily represent
those of current or past employers.
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 5: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/5.jpg)
Tools of the Trade
● Mindset/Books● Code Kata● TDD/BDD● Code Coverage● CI● Static Analysis● Code Review
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 6: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/6.jpg)
![Page 7: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/7.jpg)
Zero-Defect Mindset(MSF)
![Page 8: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/8.jpg)
![Page 9: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/9.jpg)
![Page 10: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/10.jpg)
Boy Scout Rule
![Page 11: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/11.jpg)
![Page 12: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/12.jpg)
![Page 13: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/13.jpg)
Software Craftsmanship
![Page 14: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/14.jpg)
Craftsmanship
Engineering
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 15: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/15.jpg)
“CraftsmanshipOver Crap“
(Uncle Bob)
![Page 16: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/16.jpg)
![Page 17: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/17.jpg)
Mindset
andPassion
![Page 18: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/18.jpg)
The Prime FactorsKata
![Page 19: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/19.jpg)
What Exactly Will We Do?
● write code together● using TDD● see techniques
and patterns● discuss while
doing
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 20: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/20.jpg)
The Requirements.
• Write a class named “PrimeFactors” that has one static method: generate.
● The generate method takes an integer argument and returns a List<Integer>.
● That list contains the prime factors in numerical sequence.http://butunclebob.com/ArticleS.UncleBob.ThePrimeFactorsKata
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 21: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/21.jpg)
First Some Math.
● Prime Number: number > 1 that has no divisors other than 1 and itself.
● e.g. 2, 3, 5, 61, 67, ..., 997, ..., 243112609-1● Prime Factors: prime numbers that
divide an integer without remainder.● e.g. 2 = 2,
4 = 2 * 2, 24 = 2 * 2 * 2 * 3288 = 25 * 32
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 22: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/22.jpg)
Requirements (for Mortals).
• code a file/module/class “PrimeFactors”• function/method/routine “generate“• accept an integer number as parameter• return the prime factors of that number
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 23: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/23.jpg)
Demo(Code Kata)
![Page 24: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/24.jpg)
Keep the bar green to keep the code clean
![Page 25: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/25.jpg)
Unit Testing
• test individual units• isolate each part• show that the individual parts are
correct• regression testing• sort of living documentation• executed within a framework
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 26: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/26.jpg)
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 27: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/27.jpg)
Some xUnit Frameworks
● Smalltalk – SUnit● Java - JUnit, TestNG● .NET - NUnit, Typemock● C++ - CppUTest● Groovy, PHP, Python, Ruby, Scala, ...
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 28: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/28.jpg)
“I write unit tests for one reason: so my coworkers don't f*** up my code.”
(David Angry)
![Page 29: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/29.jpg)
Test-Driven Development
● add a test● run all tests and see if the new one fails● write some code● run all tests and see them succeed● refactor code mercilessly● „Red Green Refactor“
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 30: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/30.jpg)
A minute ago all their code worked
![Page 31: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/31.jpg)
![Page 32: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/32.jpg)
BDDis
TDD“Done Right“
![Page 33: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/33.jpg)
Scenarios and Stories
focus on behaviour(e.g. requirements are behaviour)
full sentences expected behaviour should Use Arrange-Act-Assert in form of
Given-When-Then
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 34: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/34.jpg)
Testing isa mindset
![Page 35: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/35.jpg)
Youhave to want it
![Page 36: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/36.jpg)
TESTINGI FIND YOUR LACK OF TESTS DISTURBING.
![Page 37: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/37.jpg)
![Page 38: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/38.jpg)
Code Coverage
comprehensiveness of tests
![Page 39: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/39.jpg)
Beware!
comprehensiveness ≠ quality!
![Page 40: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/40.jpg)
100%(What else?)
![Page 41: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/41.jpg)
Some Code Coverage Tools
● Java - EMMA, Cobertura, Clover● .NET - NCover, PartCover● C++ - Covtool, gcov● Ruby – rcov● commercial products
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 42: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/42.jpg)
Never measure developers by
Code Coverage!
![Page 43: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/43.jpg)
Demo(Coverage)
![Page 44: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/44.jpg)
Coverage helps.Use it!
Really, Use it!
![Page 45: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/45.jpg)
Demo(Jenkins)
![Page 46: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/46.jpg)
![Page 47: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/47.jpg)
Daily BuildsNightly Builds
![Page 48: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/48.jpg)
ContinuousIntegration
![Page 49: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/49.jpg)
Continuous Integration
• Maintain a code repository• Automate the build• Make the build self-testing• Everyone commits every day• Every commit should be built• Keep the build fast• Everyone can see the results of the build
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 50: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/50.jpg)
Immediate Feedbackand
Early Warning
![Page 51: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/51.jpg)
Some CI Servers
● Java - Jenkins (Hudson), CruiseControl● .NET - TFS, Jenkins, CruiseControl.NET● C++ - Jenkins (Shell/Make)● Ruby – CruiseControl.rb● commercial products - TeamCity, ALA
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 52: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/52.jpg)
![Page 53: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/53.jpg)
![Page 54: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/54.jpg)
Good Enough?
![Page 55: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/55.jpg)
Demo(Warnings)
![Page 56: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/56.jpg)
![Page 57: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/57.jpg)
Check What?
• Lexical analysis– naming, coding conventions, design idioms
• Flow/path analysis– null-pointer, dead code (conditional)
• Dependency analysis– architectural/design flaws
• Verification– mathematical proof of correctness
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 58: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/58.jpg)
Some Static Analysis Tools
● Java - Checkstyle, Findbugs, PMD● .NET - FxCop, (ReSharper, NDepend)● C++ - (Sp)Lint● Ruby - Roodi, Dust, Flog, Saikuro● commercial products
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 59: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/59.jpg)
Many, Many Tools
![Page 60: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/60.jpg)
Good Enough?
![Page 61: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/61.jpg)
Demo(Review)
![Page 62: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/62.jpg)
Some Code Review Tools
● Your peer (Pair Programming)● Your version control system● Your IDE (e.g. ReviewClipse)● Commercial products
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 63: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/63.jpg)
![Page 64: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/64.jpg)
Lessons Learned
(!) Boy Scout Rule
(!) Do TDD/BDD
(!) Use the Tools (Coverage, CI, Static Analysis)
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 65: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/65.jpg)
Thank You
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 66: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/66.jpg)
Peter Kofler
@codecopkofler
www.code-cop.org
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 67: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/67.jpg)
Links #1Mindset● http://codebetter.com/blogs/darrell.norton/archive/2003/12/03/4222.aspx● http://www.sqnz.org.nz/documents/ShipHappens/Software%20Quality%20Group%20Presentation_frame.htm
● http://pragprog.com/the-pragmatic-programmer● http://en.wikipedia.org/wiki/Fixing_Broken_Windows● http://programmer.97things.oreilly.com/wiki/index.php/The_Boy_Scout_Rule
Software Craftsmanship● http://en.wikipedia.org/wiki/Software_craftsmanship● http://en.wikipedia.org/wiki/Robert_Cecil_Martin● http://vikashazrati.wordpress.com/2009/11/18/dissecting-software-craftsmanship/● http://clean-code-developer.de/Kata● http://en.wikipedia.org/wiki/Kata_(programming)● https://bitbucket.org/pkofler/primefactors.java/ (Kata Source Code)
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 68: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/68.jpg)
Links #2Unit Test• http://en.wikipedia.org/wiki/Unit_testing• http://en.wikipedia.org/wiki/XUnit• http://en.wikipedia.org/wiki/List_of_unit_testing_frameworksTDD• http://en.wikipedia.org/wiki/Test_Driven_DevelopmentBDD• http://en.wikipedia.org/wiki/Behavior_Driven_Development• http://dannorth.net/introducing-bdd/• http://behaviour-driven.org/Code Coverage● http://en.wikipedia.org/wiki/Code_coverage● http://www.ibm.com/developerworks/java/library/j-cq01316/
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 69: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/69.jpg)
Links #3
Continuous Integration• http://en.wikipedia.org/wiki/Continuous_integration• http://www.codinghorror.com/blog/archives/000818.html• http://www.stevemcconnell.com/ieeesoftware/bp04.htm• http://www.joelonsoftware.com/articles/fog0000000023.html• http://jenkins-ci.org/
Static Code Analysis• http://en.wikipedia.org/wiki/Static_code_analysis
• http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis
Code Review● http://en.wikipedia.org/wiki/Code_review● http://en.wikipedia.org/wiki/Pair_programming
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 70: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/70.jpg)
CC Images• spray face: http://www.flickr.com/photos/iangallagher/4115047191/• Judge Dredd: http://www.flickr.com/photos/eldave/6169431454/• list: http://www.flickr.com/photos/kylesteeddesign/3724074594/• eggs: http://www.flickr.com/photos/nickwheeleroz/2475011402/• windows: http://www.flickr.com/photos/sketchglass/4281424410/• shoe maker: http://www.flickr.com/photos/tbatty/1450209613/
(by 2010, now dead link)• factory: http://www.flickr.com/photos/94693506@N00/4643248587/• passion: http://gapingvoid.com/2011/03/29/suddenly-passion/• questions: http://www.flickr.com/photos/oberazzi/318947873/
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY
![Page 71: Code Quality AssuranceMindset/Books Code Kata TDD/BDD Code Coverage CI Static Analysis Code Review PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY Zero-Defect Mindset (MSF) Boy](https://reader035.vdocuments.us/reader035/viewer/2022062507/5fdf33340c3b4854e92f9c9c/html5/thumbnails/71.jpg)
CC Images• fence: http://www.flickr.com/photos/30830597@N08/3630649274/• Darth Vader: http://rubystammtisch.at/• covered car: http://www.flickr.com/photos/paulk/3166328163/• works: http://www.codinghorror.com/blog/archives/000818.html• Agnes: http://www.youbrokethebuild.com/• microscope: http://www.flickr.com/photos/gonzales2010/8632116/• wtf: http://www.flickr.com/photos/smitty/2245445147/• questions: http://www.flickr.com/photos/seandreilinger/2326448445/
PETER KOFLER, CODE-COP.ORG FANATIC ABOUT CODE QUALITY