Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Analyze your changeset in a branch before git p...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Janos Gyerik
November 23, 2016
Technology
370
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Analyze your changeset in a branch before git push using SonarLint + Git hooks
Janos Gyerik
November 23, 2016
More Decks by Janos Gyerik
See All by Janos Gyerik
Capture The Flag at SonarSource 2019
janosgyerik
1
45
Keyboard shortcuts
janosgyerik
0
150
Analyze your changeset in a branch before git push using SonarLint + Git hooks; Round #2
janosgyerik
0
660
Unwatch GitHub repos
janosgyerik
0
320
Code Reviews
janosgyerik
0
160
Playing with Yahoo! Pipes
janosgyerik
0
270
Cool features of GitHub
janosgyerik
0
1.4k
Time-saving tricks on the command line
janosgyerik
1
4.4k
Other Decks in Technology
See All in Technology
Snowflakeと仲良くなる第一歩
coco_se
4
500
白金鉱業Meetup_Vol.24_「AIエージェントは分けるほど良い」は本当か? / Is it true that “the more you divide AI agents, the better”?
brainpadpr
1
410
AI時代のコスト管理を考えよう〜明日から使える実践AWSノウハウ~
yoshimi0227
0
170
2026TECHFRESH畢業分享會 - 葬送的通靈師:化系統與用戶雜訊成行動訊號
line_developers_tw
PRO
0
1.2k
ルールやカスタム機能、どう活かす?ハンズオンで体感するIBM Bobの出力コントロール
muehara
1
170
やさしいA2A入門
minorun365
PRO
12
1.9k
新しいUbuntu/GNOMEが使いたいからXからWaylandへ移行頑張ってるの巻 2026-06-20
nobutomurata
0
140
スキルと MCP ツール、責務をどう分けるか? AI が迷わないインターフェース設計の戦略
cdataj
1
1.1k
機械学習を「社会実装」するということ 2026年夏版 / Social Implementation of Machine Learning June 2026 Version
moepy_stats
6
2.5k
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
1.2k
10年間のブログ発信を振り返って見えたWebアプリケーションエンジニアとしての軌跡
stefafafan
0
110
自律型AIエージェントは何を破壊するのか
kojira
0
160
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
21k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
490
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
970
The SEO Collaboration Effect
kristinabergwall1
1
490
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
410
The Mindset for Success: Future Career Progression
greggifford
PRO
0
360
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
620
AI: The stuff that nobody shows you
jnunemaker
PRO
8
720
Done Done
chrislema
186
16k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
170
Transcript
ANALYZE YOUR CHANGESET IN A BRANCH BEFORE GIT PUSH WITH
SONARLINT + GIT HOOKS https://speakerdeck.com/janosgyerik/sonarlint-before-git-push
Let’s talk about SonarTech… (aka sonar-github) SonarTech
SonarTech
SonarTech
SonarTech
SonarTech
None
You think you coded a great branch… You think “there
should be no more issues”… … sorry bud, you thought wrong!
Delay to generate comments git push fixes -> more delays
-> -> more issues -> git push fixes ->
Don’t get me wrong This is absolutely necessary But would
you push a branch if you *knew* it has 10+ issues? (-> no)
Let’s talk about
SonarLint helps, but you have to look… …it’s harder than
it sounds
Example * Open SonarLint view * Build gets broken *
(SonarLint view gone…)
build broken
Example * Open SonarLint view * Run unit tests *
(SonarLint view gone…)
run unit tests
SonarLint can help, but you have to look! Sooner or
later you cannot help and lose sight of the SonarLint view, and SonarLint just cannot force you to look, not all the time, that’s just the way it is
+ = cli hooks
$ sonarlint --src path/to/file1 --tests path/to/file2
$ ls -1 .git/hooks/ applypatch-msg.sample commit-msg.sample post-update.sample pre-applypatch.sample pre-commit.sample pre-push.sample
pre-rebase.sample prepare-commit-msg.sample update.sample
Let’s see it in action
$ git push origin HEAD info: source files to analyze:
info: src/main/java/example/HelloWorld.java info: src/main/java/example/Two.java info: analyzing... ------------- SonarLint Report ------------- 3 issues (2 files analyzed) 2 major 1 info ------------------------------------------- INFO: SonarLint HTML Report generated: /Users/janos/dev/git/github/java-maven-simple/.sonarlint/ sonarlint-report.html fatal: hook abort: some analyses have failed error: failed to push some refs to '
[email protected]
:janosgyerik/java-maven-simple.git' (push rejected if issues exist)
$ git push origin HEAD info: source files to analyze:
info: src/main/java/example/HelloWorld.java info: src/main/java/example/Two.java info: analyzing... ------------- SonarLint Report ------------- No issues to display (2 files analyzed) ------------------------------------------- INFO: SonarLint HTML Report generated: /Users/janos/dev/git/github/java-maven-simple/.sonarlint/sonarlint- report.html Counting objects: 42, done. Delta compression using up to 8 threads. Compressing objects: 100% (24/24), done. Writing objects: 100% (42/42), 2.84 KiB | 0 bytes/s, done. Total 42 (delta 11), reused 0 (delta 0) remote: Resolving deltas: 100% (11/11), completed with 2 local objects. To
[email protected]
:janosgyerik/java-maven-simple.git * [new branch] HEAD -> demo (no issues -> push OK)
git clone https://github.com/janosgyerik/sonarlint-git-hooks cd sonarlint-git-hooks ./get-and-setup-sonarlint.sh hooks=$PWD cd /path/to/your/project $hooks/install.sh
cd /path/to/another/project $hooks/install.sh
https://github.com/janosgyerik/sonarlint-git-hooks/issues Problems? Ideas? Feature requests?