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

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/
1 of 46

Recommended

Track code quality with SonarQube by
Track code quality with SonarQubeTrack code quality with SonarQube
Track code quality with SonarQubeDmytro Patserkovskyi
7.1K views33 slides
DevOps to DevSecOps Journey.. by
DevOps to DevSecOps Journey..DevOps to DevSecOps Journey..
DevOps to DevSecOps Journey..Siddharth Joshi
214 views23 slides
Containerizing MuleSoft applications for hybrid deployment by
Containerizing MuleSoft applications for hybrid deployment Containerizing MuleSoft applications for hybrid deployment
Containerizing MuleSoft applications for hybrid deployment JuliaDemidova3
147 views16 slides
Combining logs, metrics, and traces for unified observability by
Combining logs, metrics, and traces for unified observabilityCombining logs, metrics, and traces for unified observability
Combining logs, metrics, and traces for unified observabilityElasticsearch
1.2K views48 slides
SonarQube Overview by
SonarQube OverviewSonarQube Overview
SonarQube OverviewAhmed M. Gomaa
5.6K views25 slides
Sonarqube by
SonarqubeSonarqube
SonarqubePeerapat Asoktummarungsri
14.3K views21 slides

More Related Content

What's hot

Static code analysis with sonar qube by
Static code analysis with sonar qubeStatic code analysis with sonar qube
Static code analysis with sonar qubeHayi Nukman
1.2K views23 slides
devops by
devops devops
devops Somkiat Puisungnoen
450 views75 slides
Devops insights by
Devops insightsDevops insights
Devops insightsMohammad Imran Ansari
146 views14 slides
Prometheus by
PrometheusPrometheus
Prometheuswyukawa
1.3K views11 slides
End-to-End CI/CD at scale with Infrastructure-as-Code on AWS by
End-to-End CI/CD at scale with Infrastructure-as-Code on AWSEnd-to-End CI/CD at scale with Infrastructure-as-Code on AWS
End-to-End CI/CD at scale with Infrastructure-as-Code on AWSBhuvaneswari Subramani
172 views46 slides
Continuous Inspection of Code Quality: SonarQube by
Continuous Inspection of Code Quality: SonarQubeContinuous Inspection of Code Quality: SonarQube
Continuous Inspection of Code Quality: SonarQubeEmre Dündar
3.1K views41 slides

What's hot(20)

Static code analysis with sonar qube by Hayi Nukman
Static code analysis with sonar qubeStatic code analysis with sonar qube
Static code analysis with sonar qube
Hayi Nukman1.2K views
Prometheus by wyukawa
PrometheusPrometheus
Prometheus
wyukawa 1.3K views
End-to-End CI/CD at scale with Infrastructure-as-Code on AWS by Bhuvaneswari Subramani
End-to-End CI/CD at scale with Infrastructure-as-Code on AWSEnd-to-End CI/CD at scale with Infrastructure-as-Code on AWS
End-to-End CI/CD at scale with Infrastructure-as-Code on AWS
Continuous Inspection of Code Quality: SonarQube by Emre Dündar
Continuous Inspection of Code Quality: SonarQubeContinuous Inspection of Code Quality: SonarQube
Continuous Inspection of Code Quality: SonarQube
Emre Dündar3.1K views
SonarQube - Should I Stay or Should I Go ? by Geeks Anonymes
SonarQube - Should I Stay or Should I Go ? SonarQube - Should I Stay or Should I Go ?
SonarQube - Should I Stay or Should I Go ?
Geeks Anonymes3.6K views
Sonarqube by Kalkey
SonarqubeSonarqube
Sonarqube
Kalkey267 views
Continuous Delivery, Continuous Integration by Amazon Web Services
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
Amazon Web Services3.6K views
SonarQube - Como avaliar seus fornecedores e garantir a qualidade de suas ent... by Igor Rosa Macedo
SonarQube - Como avaliar seus fornecedores e garantir a qualidade de suas ent...SonarQube - Como avaliar seus fornecedores e garantir a qualidade de suas ent...
SonarQube - Como avaliar seus fornecedores e garantir a qualidade de suas ent...
Igor Rosa Macedo573 views
SonarQube: Continuous Code Inspection by Michael Jesse
SonarQube: Continuous Code InspectionSonarQube: Continuous Code Inspection
SonarQube: Continuous Code Inspection
Michael Jesse440 views
The story of SonarQube told to a DevOps Engineer by Manu Pk
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
Manu Pk7.9K views
Using Azure DevOps to continuously build, test, and deploy containerized appl... by Adrian Todorov
Using Azure DevOps to continuously build, test, and deploy containerized appl...Using Azure DevOps to continuously build, test, and deploy containerized appl...
Using Azure DevOps to continuously build, test, and deploy containerized appl...
Adrian Todorov662 views
Introducing OpenAPI Version 3.1 by SmartBear
Introducing OpenAPI Version 3.1Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1
SmartBear882 views
Red Hat OpenShift Container Platform Overview by James Falkner
Red Hat OpenShift Container Platform OverviewRed Hat OpenShift Container Platform Overview
Red Hat OpenShift Container Platform Overview
James Falkner16.3K views

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

Continuous Code Quality with the sonar ecosystem by
Continuous Code Quality with the sonar ecosystemContinuous Code Quality with the sonar ecosystem
Continuous Code Quality with the sonar ecosystemRoman Pickl
2.3K views46 slides
Functional AI and Pervasive Networking in Automotive by
 Functional AI and Pervasive Networking in Automotive Functional AI and Pervasive Networking in Automotive
Functional AI and Pervasive Networking in AutomotiveAlison Chaiken
445 views25 slides
Continuous delivery with jenkins pipelines (@devfest Vienna) by
Continuous delivery with jenkins pipelines (@devfest Vienna)Continuous delivery with jenkins pipelines (@devfest Vienna)
Continuous delivery with jenkins pipelines (@devfest Vienna)Roman Pickl
1.3K views36 slides
Continuous delivery with jenkins pipelines (@WeAreDevelopers2017) by
Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)
Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)Roman Pickl
911 views20 slides
Manage a hybrid enterprise application architecture by
Manage a hybrid enterprise application architectureManage a hybrid enterprise application architecture
Manage a hybrid enterprise application architectureOPITZ CONSULTING Deutschland
86 views36 slides
Unlocking insights in streaming data by
Unlocking insights in streaming dataUnlocking insights in streaming data
Unlocking insights in streaming dataCarolyn Duby
400 views39 slides

Similar to Continuous Code Quality with the Sonar Ecosystem @GeeCON 2017 in Prague(20)

Continuous Code Quality with the sonar ecosystem by Roman Pickl
Continuous Code Quality with the sonar ecosystemContinuous Code Quality with the sonar ecosystem
Continuous Code Quality with the sonar ecosystem
Roman Pickl2.3K views
Functional AI and Pervasive Networking in Automotive by Alison Chaiken
 Functional AI and Pervasive Networking in Automotive Functional AI and Pervasive Networking in Automotive
Functional AI and Pervasive Networking in Automotive
Alison Chaiken445 views
Continuous delivery with jenkins pipelines (@devfest Vienna) by Roman Pickl
Continuous delivery with jenkins pipelines (@devfest Vienna)Continuous delivery with jenkins pipelines (@devfest Vienna)
Continuous delivery with jenkins pipelines (@devfest Vienna)
Roman Pickl1.3K views
Continuous delivery with jenkins pipelines (@WeAreDevelopers2017) by Roman Pickl
Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)
Continuous delivery with jenkins pipelines (@WeAreDevelopers2017)
Roman Pickl911 views
Unlocking insights in streaming data by Carolyn Duby
Unlocking insights in streaming dataUnlocking insights in streaming data
Unlocking insights in streaming data
Carolyn Duby400 views
Adobe Ask the AEM Community Expert Session Oct 2016 by AdobeMarketingCloud
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
AdobeMarketingCloud1.3K views
How to use hybrid cloud to migrate and deploy unified business applications i... by Eric D. Schabell
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. Schabell223 views
IoT and Microservice by kgshukla
IoT and MicroserviceIoT and Microservice
IoT and Microservice
kgshukla1.6K views
Edge2AI delivered by Cloudera Edge Management(CEM)  by gvetticaden
Edge2AI delivered by Cloudera Edge Management(CEM) Edge2AI delivered by Cloudera Edge Management(CEM) 
Edge2AI delivered by Cloudera Edge Management(CEM) 
gvetticaden344 views
Journey to Cloud-Native: Continuous Delivery with Artificial Intelligence by VMware Tanzu
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
VMware Tanzu702 views
What is expected from Chief Cloud Officers? by Bernard Paques
What is expected from Chief Cloud Officers?What is expected from Chief Cloud Officers?
What is expected from Chief Cloud Officers?
Bernard Paques830 views
A DevOps adoption playbook- achieving business value at scale by Sanjeev Sharma
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
Sanjeev Sharma2K views
Beyond 12 Factor - Developing Cloud Native Applications by Container Solutions
Beyond 12 Factor - Developing Cloud Native ApplicationsBeyond 12 Factor - Developing Cloud Native Applications
Beyond 12 Factor - Developing Cloud Native Applications
Container Solutions1.2K views
Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship by VMware Tanzu
Cloud Foundry and Microservices: A Mutualistic Symbiotic RelationshipCloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
VMware Tanzu3.9K views
Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship by Matt Stine
Cloud Foundry and Microservices: A Mutualistic Symbiotic RelationshipCloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Matt Stine19K views
Observability for Modern Applications (CON306-R1) - AWS re:Invent 2018 by Amazon Web Services
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
Amazon Web Services1.1K views
What does Serverless mean for tomorrow’s abstracted infrastructure? - Gadi Na... by DevOpsDays Tel Aviv
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 by Hortonworks
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
Hortonworks908 views

More from Roman Pickl

Are we really moving faster? How visualizing flow changed the way we work by
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
4 views25 slides
Are we really moving faster? How visualizing flow changed the way we work by
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
118 views24 slides
Are we really moving faster? How visualizing flow changed the way we work by
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
271 views23 slides
Are we really moving faster? How visualizing flow changed the way we work - ... by
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
134 views25 slides
Continuous delivery with jenkins pipelines @devopsdays cairo by
Continuous delivery with jenkins pipelines  @devopsdays cairoContinuous delivery with jenkins pipelines  @devopsdays cairo
Continuous delivery with jenkins pipelines @devopsdays cairoRoman Pickl
286 views33 slides
Continuous delivery with jenkins pipelines @devops pro moscow by
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
268 views38 slides

More from Roman Pickl(8)

Are we really moving faster? How visualizing flow changed the way we work by Roman Pickl
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
Roman Pickl4 views
Are we really moving faster? How visualizing flow changed the way we work by Roman Pickl
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
Roman Pickl118 views
Are we really moving faster? How visualizing flow changed the way we work by Roman Pickl
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
Roman Pickl271 views
Are we really moving faster? How visualizing flow changed the way we work - ... by 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 work -  ...
Are we really moving faster? How visualizing flow changed the way we work - ...
Roman Pickl134 views
Continuous delivery with jenkins pipelines @devopsdays cairo by Roman Pickl
Continuous delivery with jenkins pipelines  @devopsdays cairoContinuous delivery with jenkins pipelines  @devopsdays cairo
Continuous delivery with jenkins pipelines @devopsdays cairo
Roman Pickl286 views
Continuous delivery with jenkins pipelines @devops pro moscow by Roman 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
Roman Pickl268 views
Continuous delivery with jenkins pipelines @ devdays by Roman Pickl
Continuous delivery with jenkins pipelines  @ devdaysContinuous delivery with jenkins pipelines  @ devdays
Continuous delivery with jenkins pipelines @ devdays
Roman Pickl691 views
Continuous delivery with jenkins pipelines incl. dev tools (@ Vienna DevOps &... by Roman 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 &...
Roman Pickl551 views

Recently uploaded

DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t... by
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...Deltares
9 views26 slides
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko... by
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...Deltares
10 views23 slides
SAP FOR TYRE INDUSTRY.pdf by
SAP FOR TYRE INDUSTRY.pdfSAP FOR TYRE INDUSTRY.pdf
SAP FOR TYRE INDUSTRY.pdfVirendra Rai, PMP
19 views3 slides
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge... by
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...Deltares
16 views12 slides
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan... by
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...Deltares
10 views30 slides
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023 by
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023Upgrading Incident Management with Icinga - Icinga Camp Milan 2023
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023Icinga
36 views17 slides

Recently uploaded(20)

DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t... by Deltares
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...
Deltares9 views
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko... by Deltares
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...
Deltares10 views
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge... by Deltares
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...
Deltares16 views
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan... by Deltares
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...
Deltares10 views
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023 by Icinga
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023Upgrading Incident Management with Icinga - Icinga Camp Milan 2023
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023
Icinga36 views
Software evolution understanding: Automatic extraction of software identifier... by Ra'Fat Al-Msie'deen
Software evolution understanding: Automatic extraction of software identifier...Software evolution understanding: Automatic extraction of software identifier...
Software evolution understanding: Automatic extraction of software identifier...
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ... by Donato Onofri
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...
Donato Onofri643 views
DSD-INT 2023 Dam break simulation in Derna (Libya) using HydroMT_SFINCS - Prida by Deltares
DSD-INT 2023 Dam break simulation in Derna (Libya) using HydroMT_SFINCS - PridaDSD-INT 2023 Dam break simulation in Derna (Libya) using HydroMT_SFINCS - Prida
DSD-INT 2023 Dam break simulation in Derna (Libya) using HydroMT_SFINCS - Prida
Deltares17 views
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ... by marksimpsongw
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...
Mark Simpson - UKOUG23 - Refactoring Monolithic Oracle Database Applications ...
marksimpsongw74 views
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J... by Deltares
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...
Deltares7 views
DSD-INT 2023 SFINCS Modelling in the U.S. Pacific Northwest - Parker by Deltares
DSD-INT 2023 SFINCS Modelling in the U.S. Pacific Northwest - ParkerDSD-INT 2023 SFINCS Modelling in the U.S. Pacific Northwest - Parker
DSD-INT 2023 SFINCS Modelling in the U.S. Pacific Northwest - Parker
Deltares8 views
Citi TechTalk Session 2: Kafka Deep Dive by confluent
Citi TechTalk Session 2: Kafka Deep DiveCiti TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep Dive
confluent17 views
Cycleops - Automate deployments on top of bare metal.pptx by Thanassis Parathyras
Cycleops - Automate deployments on top of bare metal.pptxCycleops - Automate deployments on top of bare metal.pptx
Cycleops - Automate deployments on top of bare metal.pptx
How to Install and Activate Email-Researcher by eGrabber
How to Install and Activate Email-ResearcherHow to Install and Activate Email-Researcher
How to Install and Activate Email-Researcher
eGrabber19 views
DSD-INT 2023 Delft3D FM Suite 2024.01 1D2D - Beta testing programme - Geertsema by Deltares
DSD-INT 2023 Delft3D FM Suite 2024.01 1D2D - Beta testing programme - GeertsemaDSD-INT 2023 Delft3D FM Suite 2024.01 1D2D - Beta testing programme - Geertsema
DSD-INT 2023 Delft3D FM Suite 2024.01 1D2D - Beta testing programme - Geertsema
Deltares12 views
MariaDB stored procedures and why they should be improved by Federico Razzoli
MariaDB stored procedures and why they should be improvedMariaDB stored procedures and why they should be improved
MariaDB stored procedures and why they should be improved
Geospatial Synergy: Amplifying Efficiency with FME & Esri ft. Peak Guest Spea... by Safe Software
Geospatial Synergy: Amplifying Efficiency with FME & Esri ft. Peak Guest Spea...Geospatial Synergy: Amplifying Efficiency with FME & Esri ft. Peak Guest Spea...
Geospatial Synergy: Amplifying Efficiency with FME & Esri ft. Peak Guest Spea...
Safe Software391 views

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/