SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Downloaden Sie, um offline zu lesen
Continuous Code Quality with the SonarEcosystem
Roman Pickl (roman.pickl@fluidtime.com)
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
At a glance
- 10+ years’
experience in
integrating transport
systems
- 22 mobility Apps in
the stores
- 43+ million requests
/ month
- 500.000+ unique
users / month
qando
Vienna, Linz, Graz,
Salzburg, Klagenfurt.
SMILE
Lighthouse project for
integrated mobility
Wien Mobil Lab
Vienna
FluidHub
Powering the Integrated Mobility and MaaS Ecosystem
2009
avv connect
Aachen Region, North
Rhine-Westphalia.
2014
NUMO
Vienna
2012 2015 2016
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
How did I end up here?
- Roman Pickl (@rompic)
- CTO @ Fluidtime
- In charge of the technical development
- Using SonarQube since 2013
- Attended GeeCON Prague 2016
- Liked it and applied for GeeCON Prague 2017
- Here to learn
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Agenda
- Code Quality
- Continuous Inspection with Three Lines of Defense
• Pre-Commit Analysis: SonarLint
• Pull Request Analysis
• SonarQube: Managing the Leak / Quality Gates and more
- Learnings
- Summary
- Demo
- Additional Resources
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
What gets measured gets managed
I often say that when you can measure what you are speaking
about, and express it in numbers, you know something about
it; but when you cannot express it in numbers, your knowledge
is of a meagre and unsatisfactory kind; it may be the beginning
of knowledge, but you have scarcely, in your thoughts,
advanced to the stage of science, whatever the matter may
be.
- William Thomson, 1. Baron Kelvin
https://athinkingperson.com/2012/12/02/who-said-what-gets-
measured-gets-managed/
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Software Product Quality > Code Quality
www.mif.vu.lt/~sigitas/Quality/04_SQuaRE.ppt
ISO software quality model (ISO/IEC 25010)
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
SQALE Model (Technical Debt Pyramid)
- Testability Index
- Reliability Index
- Changeability Index
- Efficiency Index
- Security Index
- Maintainability Index
- Portability Index
- Reusability Index
https://en.wikipedia.org/wiki/SQALE
© 2017 Copyright Fluidtime Data Services GmbH | www.fluidtime.com
Fluidtime
Enabling Smart Mobility.
http://www.osnews.co
m/story/19266/Smells_
m
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
SonarQube quality model
- Evolved SQALE model
- Bugs, Vulnerabilities and Code Smells are 1st class citizens
• Bugs: Code that is demonstrably wrong or highly likely to yield unexpected
behaviour.
• Vulnerabilities: Code that is potentially vulnerable to exploitation by hackers.
• Code Smells: Will confuse maintainers or give them pause.
- Not only ratings, but also approximate remediation efforts.
https://blog.sonarsource.com/bugs-and-vulnerabilities-are-1st-class-citizens-
in-sonarqube-quality-model-along-with-code-smells/
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH http://www.sasqag.org/pastmeetings/QualityPlans.pdf
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Catch those bugs early in the process
September 9, 1947
„At 3:45 p.m., Grace Murray Hopper
records the first computer bug in her log
book as she worked on the Harvard Mark
II“
http://www.computerhistory.org/tdih/September/9/
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
SonarLint
https://blog.sonarsource.com/putting-it-all-together-end-
to-end-quality-with-sonarecosystem/
Pull RequestCode Locally Trunk Release1 2 3
Three Lines of Defense
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
First line of defense : SonarLint (by SonarSource)
- Extension of your IDE
- LGPL v3
- On-the-fly feedback
- Pre commit analysis
(Fix issues before they exist)
- Local or connected mode
- Included languages
• Local: Java, JS, PHP, Python,
.NET
• More with connected mode
http://www.sonarlint.org/
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
SonarLint for IntelliJ
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
SonarLint Connected Mode
- Bind to project on SonarQube
server
- Use analyzers, quality profiles &
settings from your SonarQube
server
- Shared Custom Rule Sets
- Support for additional languages
(not all plugins!)
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Pull Request
AnalysisSonarLint
X
Pull RequestCode Locally Trunk Release
https://blog.sonarsource.com/putting-it-all-together-end-
to-end-quality-with-sonarecosystem/
Three Lines of Defense
1 2 3
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Pull Request Analysis (GitHub (SonarSource), BitBucket/Stash & GitLab
(Community))
- SonarQube Server must be up and running.
- Plugin installed on SonarQube Server
- Run for each commit / pull|merge request
- Preview analysis
- Adds an inline comment for each issue
- Adds a global summary
- Updates the status of the analysis
- Human reviewer can focus on other issues
© 2017 Copyright Fluidtime Data Services GmbH | www.fluidtime.com
Fluidtime
Enabling Smart Mobility.
https://gitlab.talanlabs.com/gabriel-allaigre/sonar-gitlab-plugin
Run: mvn --batch-mode verify sonar:sonar -Dsonar.host.url=$SONAR_URL -
Dsonar.analysis.mode=preview -Dsonar.gitlab.commit_sha=$CI_BUILD_REF -
Dsonar.gitlab.ref_name=$CI_BUILD_REF_NAME -
Dsonar.gitlab.project_id=$CI_PROJECT_ID
Setup GitLab in SonarQube Link the project in SonarQube to GitLab
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Links to plugins (not all of them are in the SonarQube update center yet)
- GitHub: https://docs.sonarqube.org/display/PLUG/GitHub+Plugin
- BitBucket: https://github.com/mibexsoftware/sonar-bitbucket-plugin
- Stash: https://github.com/AmadeusITGroup/sonar-stash
- GitLab: https://github.com/gabrie-allaigre/sonar-gitlab-plugin
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Pull Request
Analysis
Quality Gates
& Fixing the
leak
SonarLint
X X
Pull RequestCode Locally Trunk Release
https://blog.sonarsource.com/putting-it-all-together-end-
to-end-quality-with-sonarecosystem/
Three Lines of Defense
1 2 3
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
SonarQube Server (Developed by SonarSource; GNU LGPL v3)
- 20+ languages
- Wide range of plugins (Auth, SCM, Language, External Analyzers, …)
• external Analyzers like Findbugs/PMD; Most of the functionality already included in
SonarJava analyzer (https://blog.sonarsource.com/sonarqube-java-analyzer-the-
only-rule-engine-you-need/)
- 2 Versions
• Latest (Always in the middle of a major refactoring; Next LTS forecast October-
2017)
• LTS (use this if you apply any community plugins)
- Also available as a service (free for open source projects)
https://blog.sonarsource.com/walking-the-tightrope-balancing-
agility-and-stability/
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
SonarQube 6.5 (latest)
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Architecture
https://docs.sonarqube.org/display/SONAR/Architecture+and
+Integration
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Quality Gates I
- Best way to enforce a quality policy in your organization
- indicates whether your project is releaseable
- collection of go/no-go conditions
- Each gate condition is a combination of :
• Measure
• period: Value (to date) or Leak (differential value over the Leak period)
• comparison operator
• warning value (optional)
• error value (optional)
https://docs.sonarqube.org/display/SONAR/Quality+Gates
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Quality Gates II
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Fixing the leak
- Do you reach for the mop?
- Or do you try to find the
source and fix it?
à Clean up as you update and
refactor your code over time
https://docs.sonarqube.org/display/HOME/Fixing+the+Water+Leak
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Fix the leak
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Detailed information about bugs found / committers / coverage / effort to
fix etc.
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Cool stuff in the SonarEcosystem I: „Tricky Bugs are Running Scared“
https://blog.sonarsource.com/sonaranalyzer-for-java-tricky-bugs-are-
running-scared/
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Cool stuff in the SonarEcosystem II: „Cognitive Complexity“
https://blog.sonarsource.com/cognitive-complexity-because-
testability-understandability/
https://www.youtube.com/watch?v=x5V2nvxco90&feature=y
outu.be&list=PLSNlEg26NNpy1RjhlISNMRNO1gypYaXHo
https://www.sonarsource.com/docs/CognitiveComplexity.pdf
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Cool stuff in the SonarEcosystem III: highlighting of the exceptional path
when reporting issues (SonarJava 4.13)
https://www.sonarsource.com/resources/produ
ct-news/news.html#sonarjava-414
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Some more goodies
- Owasp 10 dependency check plugin:
https://github.com/stevespringett/dependency-check-sonar-plugin
- Java 9 support (since SonarJava 4.11):
https://www.sonarsource.com/resources/product-
news/news.html#sonarjava-4.11-released
- Scala analysis: http://www.openforce.com/2017/02/sonarqube-with-
scala/
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Three Lines of Defense
Pull Request
Analysis
Quality Gates
& Fixing the
leak
SonarLint
X X X
Pull RequestCode Locally Trunk Release
https://blog.sonarsource.com/putting-it-all-together-end-
to-end-quality-with-sonarecosystem/
1 2 3
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Last Bastion – Break the build (Not always a good idea)
- Since 5.2 SonarQube analysis is asynchronous so you have to wait for the
result:
- Alternatives: Make quality gate failures visible (information radiators), Issue
notifications
https://blog.sonarsource.com/why-you-shouldnt-use-build-breaker/
https://www.sonarsource.com/resources/product-news/2017/02/2017-
02-28-sonarqube-scanner-for-jenkins-2.6-released.html
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Learnings
- Green field projects: Start early, Legacy projects: Don‘t try to fix
everything– Fix the leak / exclusions / different quality profiles
- Cultural change - Not everyone loves transparency
- Good to have: Objective instance (Best Practices) with detailed
explanations (Stick to the default rules as long as possible)
- File false positives (create trust in the system; or at least make it difficult
to blame SonarQube), maybe you‘ll even learn something
- Restore build in profiles after update (to enable newly added rules)
- Use LTS if you use any community plugins (or check compatibility)
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Just one tool in your belt
https://smartbear.com/SmartBear/media/ebooks/State-of-Code-
Quality-2016.pdf
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Summary
- Code Quality is just one, important, aspect of software quality
- Continuously inspect your code.
- Start with SonarLint, today!
- Look into Pull Request Analysis and Quality Gates with SonarQube
- Explore capabilities and extend functionalities with plugins
- It’s “just” a very powerful tool and no silver bullet solution
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Demo
1. Start SonarQube Server locally: docker run -p 9000:9000 -p 9092:9092
sonarqube:6.5
2. git clone https://github.com/SonarSource/sonarlint-intellij.git (or any other
project with some issues / tests where SonarQube plugin is set up)
3. Show SonarLint in IntelliJ (Preferences ->Plugin, Add a //TODO/BUG, Show
Explanation / Analyse open Files, All Files / Changed Files; Bind to Server
Dialog)
4. (Show example for pull request analysis: E.g.
https://github.com/SonarSource/sonarqube/pull/1750)
5. Run ./gradlew check buildPlugin sonarqube in the sonarlint-intellij project
6. Increase version in gradle.properties and run again
7. Browse to http://localhost:9000/ (admin/admin)
8. Show SonarQube GUI
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Additional Resources
- Docs: https://docs.sonarqube.org
- Blog: https://blog.sonarsource.com/
- Twitter: https://twitter.com/SonarQube
- Stackoverflow: http://stackoverflow.com/questions/tagged/sonarqube
- Mailing List: https://groups.google.com/forum/#!forum/sonarqube
- Roadmap: https://www.sonarqube.org/roadmap/
- Online Service (Free for open source projects): https://sonarcloud.io
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Contact
Roman Pickl (@rompic)
roman.pickl@fluidtime.com
Fluidtime Data Services GmbH
Neubaugasse 12-14/25
A–1070 Wien
Tel +43 (0)1 5860 180
www.fluidtime.com
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Fluidtime
Enabling Smart Mobility.
© 2017 Copyright Fluidtime Data Services GmbH
Additional References (where not indicated on the slide)
- slide 12,16,20,37: All Images from the noun project
(no changes made)
- Alexander Skowalsky, „Servers“,
https://thenounproject.com/search/?q=server&i=573662
Danil Polshin, „Developer“,
https://thenounproject.com/search/?q=developer&i=597289
Blake Stevenson, „Bug“,
https://thenounproject.com/search/?q=bug&i=781390
Oliviu Stoian, „Bed Bug“,
https://thenounproject.com/search/?q=bug&i=902732
- All Icons Licensed CC BY 3.0:
https://creativecommons.org/licenses/by/3.0/us/

Weitere ähnliche Inhalte

Was ist angesagt?

The story of SonarQube told to a DevOps Engineer
The story of SonarQube told to a DevOps EngineerThe story of SonarQube told to a DevOps Engineer
The story of SonarQube told to a DevOps EngineerManu Pk
 
Software Quality Gate.pptx
Software Quality Gate.pptxSoftware Quality Gate.pptx
Software Quality Gate.pptxssuser702665
 
Sonarqube
SonarqubeSonarqube
SonarqubeKalkey
 
Testes em todos os niveis de planejamento
Testes em todos os niveis de planejamentoTestes em todos os niveis de planejamento
Testes em todos os niveis de planejamentoElias Nogueira
 
Integrating Jira Software Cloud With the AWS Code Suite
Integrating Jira Software Cloud With the AWS Code SuiteIntegrating Jira Software Cloud With the AWS Code Suite
Integrating Jira Software Cloud With the AWS Code SuiteAtlassian
 
API Testing with Open Source Code and Cucumber
API Testing with Open Source Code and CucumberAPI Testing with Open Source Code and Cucumber
API Testing with Open Source Code and CucumberSmartBear
 
QA Challenge Accepted 4.0 - Cypress vs. Selenium
QA Challenge Accepted 4.0 - Cypress vs. SeleniumQA Challenge Accepted 4.0 - Cypress vs. Selenium
QA Challenge Accepted 4.0 - Cypress vs. SeleniumLyudmil Latinov
 
Monitoring at the Speed of DevOps
Monitoring at the Speed of DevOpsMonitoring at the Speed of DevOps
Monitoring at the Speed of DevOpsDevOps.com
 
DevOps Monitoring and Alerting
DevOps Monitoring and AlertingDevOps Monitoring and Alerting
DevOps Monitoring and AlertingKhairul Zebua
 
(애자일) 테스트 계획서 샘플
(애자일) 테스트 계획서 샘플(애자일) 테스트 계획서 샘플
(애자일) 테스트 계획서 샘플SangIn Choung
 
Insprint automation, build the culture
Insprint automation, build the cultureInsprint automation, build the culture
Insprint automation, build the cultureShekharRamphal
 
Lychee Redmine最新機能紹介とLycheeの未来について
Lychee Redmine最新機能紹介とLycheeの未来についてLychee Redmine最新機能紹介とLycheeの未来について
Lychee Redmine最新機能紹介とLycheeの未来についてagileware_jp
 
Site reliability engineering
Site reliability engineeringSite reliability engineering
Site reliability engineeringJason Loeffler
 
「なにをどこまでやれば?」OWASP SAMMが導く開発セキュリティ強化戦略
「なにをどこまでやれば?」OWASP SAMMが導く開発セキュリティ強化戦略「なにをどこまでやれば?」OWASP SAMMが導く開発セキュリティ強化戦略
「なにをどこまでやれば?」OWASP SAMMが導く開発セキュリティ強化戦略Riotaro OKADA
 

Was ist angesagt? (20)

The story of SonarQube told to a DevOps Engineer
The story of SonarQube told to a DevOps EngineerThe story of SonarQube told to a DevOps Engineer
The story of SonarQube told to a DevOps Engineer
 
Selenium WebDriver
Selenium WebDriverSelenium WebDriver
Selenium WebDriver
 
Software Quality Gate.pptx
Software Quality Gate.pptxSoftware Quality Gate.pptx
Software Quality Gate.pptx
 
Cypress testing
Cypress testingCypress testing
Cypress testing
 
SonarQube Presentation.pptx
SonarQube Presentation.pptxSonarQube Presentation.pptx
SonarQube Presentation.pptx
 
Sonarqube
SonarqubeSonarqube
Sonarqube
 
Testes em todos os niveis de planejamento
Testes em todos os niveis de planejamentoTestes em todos os niveis de planejamento
Testes em todos os niveis de planejamento
 
Sonar qube
Sonar qubeSonar qube
Sonar qube
 
SonarQube Overview
SonarQube OverviewSonarQube Overview
SonarQube Overview
 
Integrating Jira Software Cloud With the AWS Code Suite
Integrating Jira Software Cloud With the AWS Code SuiteIntegrating Jira Software Cloud With the AWS Code Suite
Integrating Jira Software Cloud With the AWS Code Suite
 
API Testing with Open Source Code and Cucumber
API Testing with Open Source Code and CucumberAPI Testing with Open Source Code and Cucumber
API Testing with Open Source Code and Cucumber
 
QA Challenge Accepted 4.0 - Cypress vs. Selenium
QA Challenge Accepted 4.0 - Cypress vs. SeleniumQA Challenge Accepted 4.0 - Cypress vs. Selenium
QA Challenge Accepted 4.0 - Cypress vs. Selenium
 
Monitoring at the Speed of DevOps
Monitoring at the Speed of DevOpsMonitoring at the Speed of DevOps
Monitoring at the Speed of DevOps
 
DevOps Monitoring and Alerting
DevOps Monitoring and AlertingDevOps Monitoring and Alerting
DevOps Monitoring and Alerting
 
(애자일) 테스트 계획서 샘플
(애자일) 테스트 계획서 샘플(애자일) 테스트 계획서 샘플
(애자일) 테스트 계획서 샘플
 
Insprint automation, build the culture
Insprint automation, build the cultureInsprint automation, build the culture
Insprint automation, build the culture
 
Lychee Redmine最新機能紹介とLycheeの未来について
Lychee Redmine最新機能紹介とLycheeの未来についてLychee Redmine最新機能紹介とLycheeの未来について
Lychee Redmine最新機能紹介とLycheeの未来について
 
Site reliability engineering
Site reliability engineeringSite reliability engineering
Site reliability engineering
 
Test Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and CucumberTest Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and Cucumber
 
「なにをどこまでやれば?」OWASP SAMMが導く開発セキュリティ強化戦略
「なにをどこまでやれば?」OWASP SAMMが導く開発セキュリティ強化戦略「なにをどこまでやれば?」OWASP SAMMが導く開発セキュリティ強化戦略
「なにをどこまでやれば?」OWASP SAMMが導く開発セキュリティ強化戦略
 

Ähnlich wie Continuous Code Quality with the Sonar Ecosystem @GeeCON 2017 in Prague

Continuous Code Quality with the sonar ecosystem
Continuous Code Quality with the sonar ecosystemContinuous Code Quality with the sonar ecosystem
Continuous Code Quality with the sonar ecosystemRoman Pickl
 
Functional AI and Pervasive Networking in Automotive
 Functional AI and Pervasive Networking in Automotive Functional AI and Pervasive Networking in Automotive
Functional AI and Pervasive Networking in AutomotiveAlison Chaiken
 
Continuous delivery with jenkins pipelines (@devfest Vienna)
Continuous delivery with jenkins pipelines (@devfest Vienna)Continuous delivery with jenkins pipelines (@devfest Vienna)
Continuous delivery with jenkins pipelines (@devfest Vienna)Roman Pickl
 
Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)
Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)
Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)Roman Pickl
 
Manage a hybrid enterprise application architecture
Manage a hybrid enterprise application architectureManage a hybrid enterprise application architecture
Manage a hybrid enterprise application architectureOPITZ CONSULTING Deutschland
 
Unlocking insights in streaming data
Unlocking insights in streaming dataUnlocking insights in streaming data
Unlocking insights in streaming dataCarolyn Duby
 
Adobe Ask the AEM Community Expert Session Oct 2016
Adobe Ask the AEM Community Expert Session Oct 2016Adobe Ask the AEM Community Expert Session Oct 2016
Adobe Ask the AEM Community Expert Session Oct 2016AdobeMarketingCloud
 
Wavefront by vmware june 2019 - legraswindow
Wavefront by vmware   june 2019 - legraswindowWavefront by vmware   june 2019 - legraswindow
Wavefront by vmware june 2019 - legraswindowAnil Gupta (AJ) - vExpert
 
How to use hybrid cloud to migrate and deploy unified business applications i...
How to use hybrid cloud to migrate and deploy unified business applications i...How to use hybrid cloud to migrate and deploy unified business applications i...
How to use hybrid cloud to migrate and deploy unified business applications i...Eric D. Schabell
 
IoT and Microservice
IoT and MicroserviceIoT and Microservice
IoT and Microservicekgshukla
 
Edge2AI delivered by Cloudera Edge Management(CEM) 
Edge2AI delivered by Cloudera Edge Management(CEM) Edge2AI delivered by Cloudera Edge Management(CEM) 
Edge2AI delivered by Cloudera Edge Management(CEM) gvetticaden
 
Journey to Cloud-Native: Continuous Delivery with Artificial Intelligence
Journey to Cloud-Native: Continuous Delivery with Artificial IntelligenceJourney to Cloud-Native: Continuous Delivery with Artificial Intelligence
Journey to Cloud-Native: Continuous Delivery with Artificial IntelligenceVMware Tanzu
 
What is expected from Chief Cloud Officers?
What is expected from Chief Cloud Officers?What is expected from Chief Cloud Officers?
What is expected from Chief Cloud Officers?Bernard Paques
 
A DevOps adoption playbook- achieving business value at scale
A DevOps adoption playbook- achieving business value at scaleA DevOps adoption playbook- achieving business value at scale
A DevOps adoption playbook- achieving business value at scaleSanjeev Sharma
 
Beyond 12 Factor - Developing Cloud Native Applications
Beyond 12 Factor - Developing Cloud Native ApplicationsBeyond 12 Factor - Developing Cloud Native Applications
Beyond 12 Factor - Developing Cloud Native ApplicationsContainer Solutions
 
Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Cloud Foundry and Microservices: A Mutualistic Symbiotic RelationshipCloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Cloud Foundry and Microservices: A Mutualistic Symbiotic RelationshipVMware Tanzu
 
Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Cloud Foundry and Microservices: A Mutualistic Symbiotic RelationshipCloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Cloud Foundry and Microservices: A Mutualistic Symbiotic RelationshipMatt Stine
 
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018Amazon Web Services
 
What does Serverless mean for tomorrow’s abstracted infrastructure? - Gadi Na...
What does Serverless mean for tomorrow’s abstracted infrastructure? - Gadi Na...What does Serverless mean for tomorrow’s abstracted infrastructure? - Gadi Na...
What does Serverless mean for tomorrow’s abstracted infrastructure? - Gadi Na...DevOpsDays Tel Aviv
 
HDF 3.1 pt. 2: A Technical Deep-Dive on New Streaming Features
HDF 3.1 pt. 2: A Technical Deep-Dive on New Streaming FeaturesHDF 3.1 pt. 2: A Technical Deep-Dive on New Streaming Features
HDF 3.1 pt. 2: A Technical Deep-Dive on New Streaming FeaturesHortonworks
 

Ähnlich wie Continuous Code Quality with the Sonar Ecosystem @GeeCON 2017 in Prague (20)

Continuous Code Quality with the sonar ecosystem
Continuous Code Quality with the sonar ecosystemContinuous Code Quality with the sonar ecosystem
Continuous Code Quality with the sonar ecosystem
 
Functional AI and Pervasive Networking in Automotive
 Functional AI and Pervasive Networking in Automotive Functional AI and Pervasive Networking in Automotive
Functional AI and Pervasive Networking in Automotive
 
Continuous delivery with jenkins pipelines (@devfest Vienna)
Continuous delivery with jenkins pipelines (@devfest Vienna)Continuous delivery with jenkins pipelines (@devfest Vienna)
Continuous delivery with jenkins pipelines (@devfest Vienna)
 
Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)
Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)
Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)
 
Manage a hybrid enterprise application architecture
Manage a hybrid enterprise application architectureManage a hybrid enterprise application architecture
Manage a hybrid enterprise application architecture
 
Unlocking insights in streaming data
Unlocking insights in streaming dataUnlocking insights in streaming data
Unlocking insights in streaming data
 
Adobe Ask the AEM Community Expert Session Oct 2016
Adobe Ask the AEM Community Expert Session Oct 2016Adobe Ask the AEM Community Expert Session Oct 2016
Adobe Ask the AEM Community Expert Session Oct 2016
 
Wavefront by vmware june 2019 - legraswindow
Wavefront by vmware   june 2019 - legraswindowWavefront by vmware   june 2019 - legraswindow
Wavefront by vmware june 2019 - legraswindow
 
How to use hybrid cloud to migrate and deploy unified business applications i...
How to use hybrid cloud to migrate and deploy unified business applications i...How to use hybrid cloud to migrate and deploy unified business applications i...
How to use hybrid cloud to migrate and deploy unified business applications i...
 
IoT and Microservice
IoT and MicroserviceIoT and Microservice
IoT and Microservice
 
Edge2AI delivered by Cloudera Edge Management(CEM) 
Edge2AI delivered by Cloudera Edge Management(CEM) Edge2AI delivered by Cloudera Edge Management(CEM) 
Edge2AI delivered by Cloudera Edge Management(CEM) 
 
Journey to Cloud-Native: Continuous Delivery with Artificial Intelligence
Journey to Cloud-Native: Continuous Delivery with Artificial IntelligenceJourney to Cloud-Native: Continuous Delivery with Artificial Intelligence
Journey to Cloud-Native: Continuous Delivery with Artificial Intelligence
 
What is expected from Chief Cloud Officers?
What is expected from Chief Cloud Officers?What is expected from Chief Cloud Officers?
What is expected from Chief Cloud Officers?
 
A DevOps adoption playbook- achieving business value at scale
A DevOps adoption playbook- achieving business value at scaleA DevOps adoption playbook- achieving business value at scale
A DevOps adoption playbook- achieving business value at scale
 
Beyond 12 Factor - Developing Cloud Native Applications
Beyond 12 Factor - Developing Cloud Native ApplicationsBeyond 12 Factor - Developing Cloud Native Applications
Beyond 12 Factor - Developing Cloud Native Applications
 
Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Cloud Foundry and Microservices: A Mutualistic Symbiotic RelationshipCloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
 
Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Cloud Foundry and Microservices: A Mutualistic Symbiotic RelationshipCloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
 
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018
 
What does Serverless mean for tomorrow’s abstracted infrastructure? - Gadi Na...
What does Serverless mean for tomorrow’s abstracted infrastructure? - Gadi Na...What does Serverless mean for tomorrow’s abstracted infrastructure? - Gadi Na...
What does Serverless mean for tomorrow’s abstracted infrastructure? - Gadi Na...
 
HDF 3.1 pt. 2: A Technical Deep-Dive on New Streaming Features
HDF 3.1 pt. 2: A Technical Deep-Dive on New Streaming FeaturesHDF 3.1 pt. 2: A Technical Deep-Dive on New Streaming Features
HDF 3.1 pt. 2: A Technical Deep-Dive on New Streaming Features
 

Mehr von Roman Pickl

Are we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we workAre we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we workRoman Pickl
 
Are we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we workAre we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we workRoman Pickl
 
Are we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we workAre we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we workRoman Pickl
 
Are we really moving faster? How visualizing flow changed the way we work - ...
Are we really moving faster? How visualizing flow changed the way we work -  ...Are we really moving faster? How visualizing flow changed the way we work -  ...
Are we really moving faster? How visualizing flow changed the way we work - ...Roman Pickl
 
Continuous delivery with jenkins pipelines @devopsdays cairo
Continuous delivery with jenkins pipelines  @devopsdays cairoContinuous delivery with jenkins pipelines  @devopsdays cairo
Continuous delivery with jenkins pipelines @devopsdays cairoRoman Pickl
 
Continuous delivery with jenkins pipelines @devops pro moscow
Continuous delivery with jenkins pipelines @devops pro moscow Continuous delivery with jenkins pipelines @devops pro moscow
Continuous delivery with jenkins pipelines @devops pro moscow Roman Pickl
 
Continuous delivery with jenkins pipelines @ devdays
Continuous delivery with jenkins pipelines  @ devdaysContinuous delivery with jenkins pipelines  @ devdays
Continuous delivery with jenkins pipelines @ devdaysRoman Pickl
 
Continuous delivery with jenkins pipelines incl. dev tools (@ Vienna DevOps &...
Continuous delivery with jenkins pipelines incl. dev tools (@ Vienna DevOps &...Continuous delivery with jenkins pipelines incl. dev tools (@ Vienna DevOps &...
Continuous delivery with jenkins pipelines incl. dev tools (@ Vienna DevOps &...Roman Pickl
 

Mehr von Roman Pickl (8)

Are we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we workAre we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we work
 
Are we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we workAre we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we work
 
Are we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we workAre we really moving faster? How visualizing flow changed the way we work
Are we really moving faster? How visualizing flow changed the way we work
 
Are we really moving faster? How visualizing flow changed the way we work - ...
Are we really moving faster? How visualizing flow changed the way we work -  ...Are we really moving faster? How visualizing flow changed the way we work -  ...
Are we really moving faster? How visualizing flow changed the way we work - ...
 
Continuous delivery with jenkins pipelines @devopsdays cairo
Continuous delivery with jenkins pipelines  @devopsdays cairoContinuous delivery with jenkins pipelines  @devopsdays cairo
Continuous delivery with jenkins pipelines @devopsdays cairo
 
Continuous delivery with jenkins pipelines @devops pro moscow
Continuous delivery with jenkins pipelines @devops pro moscow Continuous delivery with jenkins pipelines @devops pro moscow
Continuous delivery with jenkins pipelines @devops pro moscow
 
Continuous delivery with jenkins pipelines @ devdays
Continuous delivery with jenkins pipelines  @ devdaysContinuous delivery with jenkins pipelines  @ devdays
Continuous delivery with jenkins pipelines @ devdays
 
Continuous delivery with jenkins pipelines incl. dev tools (@ Vienna DevOps &...
Continuous delivery with jenkins pipelines incl. dev tools (@ Vienna DevOps &...Continuous delivery with jenkins pipelines incl. dev tools (@ Vienna DevOps &...
Continuous delivery with jenkins pipelines incl. dev tools (@ Vienna DevOps &...
 

Kürzlich hochgeladen

20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 

Kürzlich hochgeladen (20)

20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 

Continuous Code Quality with the Sonar Ecosystem @GeeCON 2017 in Prague

  • 1. Continuous Code Quality with the SonarEcosystem Roman Pickl (roman.pickl@fluidtime.com)
  • 2. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH At a glance - 10+ years’ experience in integrating transport systems - 22 mobility Apps in the stores - 43+ million requests / month - 500.000+ unique users / month qando Vienna, Linz, Graz, Salzburg, Klagenfurt. SMILE Lighthouse project for integrated mobility Wien Mobil Lab Vienna FluidHub Powering the Integrated Mobility and MaaS Ecosystem 2009 avv connect Aachen Region, North Rhine-Westphalia. 2014 NUMO Vienna 2012 2015 2016
  • 3. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH How did I end up here? - Roman Pickl (@rompic) - CTO @ Fluidtime - In charge of the technical development - Using SonarQube since 2013 - Attended GeeCON Prague 2016 - Liked it and applied for GeeCON Prague 2017 - Here to learn
  • 4. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Agenda - Code Quality - Continuous Inspection with Three Lines of Defense • Pre-Commit Analysis: SonarLint • Pull Request Analysis • SonarQube: Managing the Leak / Quality Gates and more - Learnings - Summary - Demo - Additional Resources
  • 5. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH What gets measured gets managed I often say that when you can measure what you are speaking about, and express it in numbers, you know something about it; but when you cannot express it in numbers, your knowledge is of a meagre and unsatisfactory kind; it may be the beginning of knowledge, but you have scarcely, in your thoughts, advanced to the stage of science, whatever the matter may be. - William Thomson, 1. Baron Kelvin https://athinkingperson.com/2012/12/02/who-said-what-gets- measured-gets-managed/
  • 6. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Software Product Quality > Code Quality www.mif.vu.lt/~sigitas/Quality/04_SQuaRE.ppt ISO software quality model (ISO/IEC 25010)
  • 7. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH SQALE Model (Technical Debt Pyramid) - Testability Index - Reliability Index - Changeability Index - Efficiency Index - Security Index - Maintainability Index - Portability Index - Reusability Index https://en.wikipedia.org/wiki/SQALE
  • 8. © 2017 Copyright Fluidtime Data Services GmbH | www.fluidtime.com Fluidtime Enabling Smart Mobility. http://www.osnews.co m/story/19266/Smells_ m
  • 9. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH SonarQube quality model - Evolved SQALE model - Bugs, Vulnerabilities and Code Smells are 1st class citizens • Bugs: Code that is demonstrably wrong or highly likely to yield unexpected behaviour. • Vulnerabilities: Code that is potentially vulnerable to exploitation by hackers. • Code Smells: Will confuse maintainers or give them pause. - Not only ratings, but also approximate remediation efforts. https://blog.sonarsource.com/bugs-and-vulnerabilities-are-1st-class-citizens- in-sonarqube-quality-model-along-with-code-smells/
  • 10. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH http://www.sasqag.org/pastmeetings/QualityPlans.pdf
  • 11. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Catch those bugs early in the process September 9, 1947 „At 3:45 p.m., Grace Murray Hopper records the first computer bug in her log book as she worked on the Harvard Mark II“ http://www.computerhistory.org/tdih/September/9/
  • 12. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH SonarLint https://blog.sonarsource.com/putting-it-all-together-end- to-end-quality-with-sonarecosystem/ Pull RequestCode Locally Trunk Release1 2 3 Three Lines of Defense
  • 13. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH First line of defense : SonarLint (by SonarSource) - Extension of your IDE - LGPL v3 - On-the-fly feedback - Pre commit analysis (Fix issues before they exist) - Local or connected mode - Included languages • Local: Java, JS, PHP, Python, .NET • More with connected mode http://www.sonarlint.org/
  • 14. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH SonarLint for IntelliJ
  • 15. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH SonarLint Connected Mode - Bind to project on SonarQube server - Use analyzers, quality profiles & settings from your SonarQube server - Shared Custom Rule Sets - Support for additional languages (not all plugins!)
  • 16. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Pull Request AnalysisSonarLint X Pull RequestCode Locally Trunk Release https://blog.sonarsource.com/putting-it-all-together-end- to-end-quality-with-sonarecosystem/ Three Lines of Defense 1 2 3
  • 17. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Pull Request Analysis (GitHub (SonarSource), BitBucket/Stash & GitLab (Community)) - SonarQube Server must be up and running. - Plugin installed on SonarQube Server - Run for each commit / pull|merge request - Preview analysis - Adds an inline comment for each issue - Adds a global summary - Updates the status of the analysis - Human reviewer can focus on other issues
  • 18. © 2017 Copyright Fluidtime Data Services GmbH | www.fluidtime.com Fluidtime Enabling Smart Mobility. https://gitlab.talanlabs.com/gabriel-allaigre/sonar-gitlab-plugin Run: mvn --batch-mode verify sonar:sonar -Dsonar.host.url=$SONAR_URL - Dsonar.analysis.mode=preview -Dsonar.gitlab.commit_sha=$CI_BUILD_REF - Dsonar.gitlab.ref_name=$CI_BUILD_REF_NAME - Dsonar.gitlab.project_id=$CI_PROJECT_ID Setup GitLab in SonarQube Link the project in SonarQube to GitLab
  • 19. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Links to plugins (not all of them are in the SonarQube update center yet) - GitHub: https://docs.sonarqube.org/display/PLUG/GitHub+Plugin - BitBucket: https://github.com/mibexsoftware/sonar-bitbucket-plugin - Stash: https://github.com/AmadeusITGroup/sonar-stash - GitLab: https://github.com/gabrie-allaigre/sonar-gitlab-plugin
  • 20. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Pull Request Analysis Quality Gates & Fixing the leak SonarLint X X Pull RequestCode Locally Trunk Release https://blog.sonarsource.com/putting-it-all-together-end- to-end-quality-with-sonarecosystem/ Three Lines of Defense 1 2 3
  • 21. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH SonarQube Server (Developed by SonarSource; GNU LGPL v3) - 20+ languages - Wide range of plugins (Auth, SCM, Language, External Analyzers, …) • external Analyzers like Findbugs/PMD; Most of the functionality already included in SonarJava analyzer (https://blog.sonarsource.com/sonarqube-java-analyzer-the- only-rule-engine-you-need/) - 2 Versions • Latest (Always in the middle of a major refactoring; Next LTS forecast October- 2017) • LTS (use this if you apply any community plugins) - Also available as a service (free for open source projects) https://blog.sonarsource.com/walking-the-tightrope-balancing- agility-and-stability/
  • 22. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH SonarQube 6.5 (latest)
  • 23. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Architecture https://docs.sonarqube.org/display/SONAR/Architecture+and +Integration
  • 24. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Quality Gates I - Best way to enforce a quality policy in your organization - indicates whether your project is releaseable - collection of go/no-go conditions - Each gate condition is a combination of : • Measure • period: Value (to date) or Leak (differential value over the Leak period) • comparison operator • warning value (optional) • error value (optional) https://docs.sonarqube.org/display/SONAR/Quality+Gates
  • 25. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Quality Gates II
  • 26. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Fixing the leak - Do you reach for the mop? - Or do you try to find the source and fix it? à Clean up as you update and refactor your code over time https://docs.sonarqube.org/display/HOME/Fixing+the+Water+Leak
  • 27. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Fix the leak
  • 28. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Detailed information about bugs found / committers / coverage / effort to fix etc.
  • 29. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH
  • 30. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH
  • 31. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH
  • 32. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH
  • 33. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Cool stuff in the SonarEcosystem I: „Tricky Bugs are Running Scared“ https://blog.sonarsource.com/sonaranalyzer-for-java-tricky-bugs-are- running-scared/
  • 34. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Cool stuff in the SonarEcosystem II: „Cognitive Complexity“ https://blog.sonarsource.com/cognitive-complexity-because- testability-understandability/ https://www.youtube.com/watch?v=x5V2nvxco90&feature=y outu.be&list=PLSNlEg26NNpy1RjhlISNMRNO1gypYaXHo https://www.sonarsource.com/docs/CognitiveComplexity.pdf
  • 35. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Cool stuff in the SonarEcosystem III: highlighting of the exceptional path when reporting issues (SonarJava 4.13) https://www.sonarsource.com/resources/produ ct-news/news.html#sonarjava-414
  • 36. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Some more goodies - Owasp 10 dependency check plugin: https://github.com/stevespringett/dependency-check-sonar-plugin - Java 9 support (since SonarJava 4.11): https://www.sonarsource.com/resources/product- news/news.html#sonarjava-4.11-released - Scala analysis: http://www.openforce.com/2017/02/sonarqube-with- scala/
  • 37. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Three Lines of Defense Pull Request Analysis Quality Gates & Fixing the leak SonarLint X X X Pull RequestCode Locally Trunk Release https://blog.sonarsource.com/putting-it-all-together-end- to-end-quality-with-sonarecosystem/ 1 2 3
  • 38. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Last Bastion – Break the build (Not always a good idea) - Since 5.2 SonarQube analysis is asynchronous so you have to wait for the result: - Alternatives: Make quality gate failures visible (information radiators), Issue notifications https://blog.sonarsource.com/why-you-shouldnt-use-build-breaker/ https://www.sonarsource.com/resources/product-news/2017/02/2017- 02-28-sonarqube-scanner-for-jenkins-2.6-released.html
  • 39. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Learnings - Green field projects: Start early, Legacy projects: Don‘t try to fix everything– Fix the leak / exclusions / different quality profiles - Cultural change - Not everyone loves transparency - Good to have: Objective instance (Best Practices) with detailed explanations (Stick to the default rules as long as possible) - File false positives (create trust in the system; or at least make it difficult to blame SonarQube), maybe you‘ll even learn something - Restore build in profiles after update (to enable newly added rules) - Use LTS if you use any community plugins (or check compatibility)
  • 40. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Just one tool in your belt https://smartbear.com/SmartBear/media/ebooks/State-of-Code- Quality-2016.pdf
  • 41. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Summary - Code Quality is just one, important, aspect of software quality - Continuously inspect your code. - Start with SonarLint, today! - Look into Pull Request Analysis and Quality Gates with SonarQube - Explore capabilities and extend functionalities with plugins - It’s “just” a very powerful tool and no silver bullet solution
  • 42. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Demo 1. Start SonarQube Server locally: docker run -p 9000:9000 -p 9092:9092 sonarqube:6.5 2. git clone https://github.com/SonarSource/sonarlint-intellij.git (or any other project with some issues / tests where SonarQube plugin is set up) 3. Show SonarLint in IntelliJ (Preferences ->Plugin, Add a //TODO/BUG, Show Explanation / Analyse open Files, All Files / Changed Files; Bind to Server Dialog) 4. (Show example for pull request analysis: E.g. https://github.com/SonarSource/sonarqube/pull/1750) 5. Run ./gradlew check buildPlugin sonarqube in the sonarlint-intellij project 6. Increase version in gradle.properties and run again 7. Browse to http://localhost:9000/ (admin/admin) 8. Show SonarQube GUI
  • 43. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Additional Resources - Docs: https://docs.sonarqube.org - Blog: https://blog.sonarsource.com/ - Twitter: https://twitter.com/SonarQube - Stackoverflow: http://stackoverflow.com/questions/tagged/sonarqube - Mailing List: https://groups.google.com/forum/#!forum/sonarqube - Roadmap: https://www.sonarqube.org/roadmap/ - Online Service (Free for open source projects): https://sonarcloud.io
  • 44. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Contact Roman Pickl (@rompic) roman.pickl@fluidtime.com Fluidtime Data Services GmbH Neubaugasse 12-14/25 A–1070 Wien Tel +43 (0)1 5860 180 www.fluidtime.com
  • 45. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH
  • 46. Fluidtime Enabling Smart Mobility. © 2017 Copyright Fluidtime Data Services GmbH Additional References (where not indicated on the slide) - slide 12,16,20,37: All Images from the noun project (no changes made) - Alexander Skowalsky, „Servers“, https://thenounproject.com/search/?q=server&i=573662 Danil Polshin, „Developer“, https://thenounproject.com/search/?q=developer&i=597289 Blake Stevenson, „Bug“, https://thenounproject.com/search/?q=bug&i=781390 Oliviu Stoian, „Bed Bug“, https://thenounproject.com/search/?q=bug&i=902732 - All Icons Licensed CC BY 3.0: https://creativecommons.org/licenses/by/3.0/us/