Improving Software Quality with the Continuous Integration Server Hudson. Dr. Ullrich Hafner Avaloq Evolution AG 8911



Similar documents
Java Power Tools. John Ferguson Smart. ULB Darmstadt 1 PI. O'REILLY 4 Beijing Cambridge Farnham Koln Paris Sebastopol Taipei Tokyo

Jenkins: The Definitive Guide

Build management & Continuous integration. with Maven & Hudson

Java Software Quality Tools and techniques

Software infrastructure for Java development projects

Coding in Industry. David Berry Director of Engineering Qualcomm Cambridge Ltd

Modulo II Qualidade de Software com Maven

TeamCity A Professional Solution for Delivering Quality Software, on Time

Jenkins Continuous Build System. Jesse Bowes CSCI-5828 Spring 2012

EUROPEAN ORGANIZATION FOR NUCLEAR RESEARCH CERN ACCELERATORS AND TECHNOLOGY SECTOR

Continuous Integration

Software Construction

Introduction and Agenda

Continuous Integration For Fusion Middleware

SMZ. SocialMedia. Z olutions

Qualität ist kein Zufall *

What the heck is that bar over there?

Spot defects early with Continuous Integration

Effective feedback from quality tools during development

<Insert Picture Here> What's New in NetBeans IDE 7.2

SA4 Software Developer Survey Survey Specification v2.2

SOA-14: Continuous Integration in SOA Projects Andreas Gies

Meister Going Beyond Maven

Two-Way Data Binding with WinJS By Marcin Kawalerowicz and Craig Berntson, authors of Continuous Integration in.net

Paul Barham Program Manager - Java. David Staheli (dastahel@microsoft.com) Software Development Manager - Java

Continuous Integration

Continuous Delivery. Alejandro Ruiz

a way to successful Delivery

Open Source Tools. The Magazine for Professional Testers. December 2010

SOFTWARE DEVELOPMENT BASICS SED

Code Quality Assurance. Peter Kofler, Code Cop FH Technikum Wien, February 2010

Continuous Integration with Jenkins. Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8

Delivering Quality Software with Continuous Integration

Continuous Integration: Put it at the heart of your development

Maven or how to automate java builds, tests and version management with open source tools

Content. Development Tools 2(63)

Introduction to Programming Tools. Anjana & Shankar September,2010

Continuous Integration Multi-Stage Builds for Quality Assurance

Software project management. and. Maven

Hudson Continous Integration Server. Stefan Saasen,

Automating the Nengo build process

The 3C Approach for Agile Scrum Software Methodology Jisha Johns, Akhil P Sivan, Prof. K Balachandran, Prof. B R Prathap

SAP's Integrated Development Environment for Java. Karl Kessler, SAP AG

Rapid Server Side Java Development Using Spring Roo. Christian Tzolov Technical Lead, TTSD, TomTom BV 12/05/2010

Sonatype CLM Enforcement Points - Continuous Integration (CI) Sonatype CLM Enforcement Points - Continuous Integration (CI)

GLOBAL CONSULTING SERVICES TOOLS FOR WEBMETHODS Software AG. All rights reserved. For internal use only

Continuous Integration The Full Monty Artifactory and Gradle. Yoav Landman & Frederic Simon

How To Write Unit Tests In A Continuous Integration

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

GECKO Software. Introducing FACTORY SCHEMES. Adaptable software factory Patterns

Upping the game. Improving your software development process

Continuous Integration in Kieker

Sonatype CLM for Maven. Sonatype CLM for Maven

Selenium Automation set up with TestNG and Eclipse- A Beginners Guide

Continuous Integration

Software project management. and. Maven

Continuous Delivery for Alfresco Solutions. Satisfied customers and happy developers with!! Continuous Delivery!

VERIFICATION AND VALIDATION AUTOMATED TESTING TOOLS CLAUDIU ADAM

vs. Web Site: Blog: blog.soebes.com Dipl.Ing.(FH) Karl Heinz Marbaise

Continuous Integration: Improving Software Quality and Reducing Risk. Preetam Palwe Aftek Limited

Agile ALM. Lightweight tools and Agile strategies MANNING MICHAEL HUTTERMANN. Shelter Island

Effektiver Tool-Einsatz

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

How the Open Source tools and spirit enable better projects July 09 th 2009

Automated performance testing using Maven & JMeter. George Barnett, Atlassian Software

Leveraging Rational Team Concert's build capabilities for Continuous Integration

Software Continuous Integration & Delivery

Agile Best Practices and Patterns for Success on an Agile Software development project.

Build Management. Context. Learning Objectives

CONTINUOUS INTEGRATION. Introduction

HP ALM11 & MS VS/TFS2010

O Reilly Ebooks Your bookshelf on your devices!

Building, testing and deploying mobile apps with Jenkins & friends

The Hitchhiker's Guide to Mobile Apps Test Automation Galaxy

Continuous Integration

Improve your tests with Mutation Testing. Nicolas Fränkel

20-21 August 2008, Queenstown, New Zealand. Kia ora Koutou (Greetings everyone!)

Developer Workshop Marc Dumontier McMaster/OSCAR-EMR

Mastering Continuous Integration with Jenkins

Automate Your Deployment with Bamboo, Drush and Features DrupalCamp Scotland, 9 th 10 th May 2014

Jenkins User Conference Herzelia, July #jenkinsconf. Testing a Large Support Matrix Using Jenkins. Amir Kibbar HP

D45.2 Reference test environment

Beginning POJOs. From Novice to Professional. Brian Sam-Bodden

Extend WTP Server Tools for your application server. Tim deboer Gorkem Ercan

EMC Documentum Composer

Testing Tools Content (Manual with Selenium) Levels of Testing

Architecture Rules Enforcement and Governance Using Aspects

Programmers rejoice: QML makes business people understand. Qt Developer Days 2014 Hinrich Specht 2. September 2014 Folie 1

Continuous Integration and Deployment Modern Technique's

The Unix-like Build Pattern

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

RepoGuard Validation Framework for Version Control Systems

November 12 th 13 th London: Mastering Continuous Integration with Jenkins

Would Static Analysis Tools Help Developers with Code Reviews?

Continuous Prevention Testing

GLOBAL JOURNAL OF ENGINEERING SCIENCE AND RESEARCHES

A central continuous integration platform

MODERN WEB APPLICATION DEVELOPMENT WORKFLOW

Josef Scherer, Berthold Schreiber Scrum Gathering, Munich, 20 October 2009

Glassbox: Open Source and Automated Application Troubleshooting. Ron Bodkin Glassbox Project Leader

Transcription:

Improving Software Quality with the Continuous Integration Server Hudson Dr. Ullrich Hafner Avaloq Evolution AG 8911

AGENDA 2 > INTRODUCTION TO CI AND HUDSON > USING STATIC ANALYSIS IN PROJECTS > DEMO OF STATIC ANALYSIS IN HUDSON

A short introduction to continuous integration 3 > Continuous integration (CI) is the practice of integrating early and often Developer checks in new or modified code into the repository CI Server polls the repository for changes and starts a new build if necessary > Basic activities of a CI server Check out the source code into a fresh workspace Compile sources, run tests, package and deploy the product Inform the project team about compile errors or test failures > Advanced activities of a CI server Measure the quality of the unit tests with code coverage tools Measure the quality of the source code with static code analysis tools

Hudson is a user friendly open source CI server 4 > Easy installation (only one executable, no database, automatically installs jdk, maven, ant ) > Easy configuration (Web 2.0 UI with validation, no XML configuration) > Web 2.0 UI to visualize the build results > Support of all popular revision control systems > Integration of various issue tracking systems > RSS, E- mail, IM integration > Distributed builds > Integrated Maven 2 support > Open Source (https:/ / hudson.dev.java.net) > Ex tensible (more than 100 plug- ins are available)

Hudson supports all important Java tools 5 > Static Analysis and Compilers Checkstyle FindBugs PMD and CPD Javac JavaDoc Eclipse Compiler Crap4J JavaNCSS (Sonar) > Testing JUnit Cobertura Emma Clover TestNG Fitnesse Grinder Selenium WebTest

How to apply static analysis in projects 6 > Basically two options are possible when using static analysis tools a) Monitor the results (in your IDE or Hudson) and use them in code reviews b) Enforce zero warning projects (i.e., fail a build if there are new warnings) > Drawbacks of option a) Broken window effect: if there are too many warnings, the developers will ignore them at some point It is difficult to distinguish new warnings from ex isting ones in reviews > Advantages of option b) Self- healing since developers don t want to be blamed for failed builds Easy detection of involved change sets

Best practices to obtain zero warnings projects 7 > New Projects Start with complete set of warning rules (CheckStyle, FindBugs, PMD) Fail a build as soon as there are new warnings Discuss the warnings with the team (find an agreement to either fix the code or remove the affected warning rule) > Ex isting projects Spend the time to fix these warnings Use a small subset of warning rules (e.g., only severity high) Use different rule sets for existing and new projects

A strategy to obtain zero warnings in an existing project 8 > In our team we use a combination of these best practices Check existing projects with all warning rules Select the most important ones Recheck projects with the reduced set of rules Spend some time to reduce the number of important warnings For the remaining warnings use suppression warning filters > Policy when modifying code in one of the old modules Consider old projects read- only Move code to new projects if possible (dependencies) Remove suppression warnings filters Fix all warnings before check- in

Static analysis in Hudson 9 > DEMO

Hudson provides a quick overview of a project s quality status 10 > Each project has a health status that is computed from the number of successful builds in the last couple of days the code coverage of the unit tests the number of warnings in the source code > A build can be set to failed if too many warnings are found (total or new)

11 Various graphs show the historical trend of a project or Maven module > Number of unit tests per build (failed or total) > Coverage per build (package, class or line coverage) > Total warnings per build (with severities distribution) > Total warnings per build (with build health thresholds) > New and fixed warnings per build > Difference between new and fix ed warnings per build (cumulative)

12 A summary page shows the important results of each build step

A summary table aggregates the warnings 13 > Warnings are aggregated in several ways Warnings per module (derived from build.x ml or pom.x ml) Warnings per package or file Warnings per category or type

Warning messages are complemented by detailed descriptions from the manual of the analysis tool 14

Warnings are listed in a table 15 > Sortable table with all warnings > Separate tables for new and fixed warnings as well as per severity > Tooltip shows the message with the detailed description > Links to the source code

Warnings are visualized in the source code 16 > Highlighting of the warnings in the source files Java syntax highlighting Warnings can span multiple lines Multiple blocks per warning Warning message in tooltip Warning details from the manual or homepage of the analysis tool > Source files are stored for each build

Future prospects 17 > Interaction of the individual tools (combined graphs and thresholds) > Multi project analysis > Display of warning suppression filters (@SuppressWarnings) > Smart handling of projects with thousands of warnings > If you have any feature requests: https:/ / hudson.dev.java.net/ issues/

Dr. Ullrich Hafner ullrich.hafner@gmx.de Avaloq Evolution AG www.avaloq.com