静的解析ツールで生産性向上
by
Kengo TODA
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
静的解析ツールで生産性向上 2021-Feb-24, Kengo TODA 1
Slide 2
Slide 2 text
自己紹介 https://github.com/kengotoda/ Java, Groovy, TypeScriptなどで開発する趣味&本業プログラマ。最近はGroovyプラグ イン開発が楽しい。 2
Slide 3
Slide 3 text
Agenda 1. 静的解析ツールとは 2. 静的解析ツールによる3つの主な生産性向上 3. まとめ 4. 付録 3
Slide 4
Slide 4 text
静的解析ツールとは ソースコードやコンパイル結果などに対して解析を行い、それを実行することなく課題を 発見するためのツール。 Java言語周りだけでもFindBugs, PMD, Checkstyle, Checker Framework, Google Errorproneなど多様なツールが存在。またSonarQube, LGTM.com, Codacyなどサービ スとして稼働するものも多い。 4
Slide 5
Slide 5 text
FindBugs? 終了したはずでは? “Java8からJava11への移行する際の注意点に関す るセッションでした。(中略) セッション内で印象に残ったのは、「 findbugsなどコ ミュニティが終了して Java11に対応できないものが ある」という点と(後略) ” JJUG CCC 2018 Fall に参加しました!! ラクス エンジニアブログ 5
Slide 6
Slide 6 text
有志によるforkがあります SpotBugsという名前でGitHubにて開発中。 Your contribution is welcome! 6
Slide 7
Slide 7 text
静的解析ツールによる3つの主な生産性向上 1. 言語やフレームワークの学習効率の改善 2. 早い段階で不具合を見つけて手戻り削減 3. コードレビューで人が議論すべき論点に注力してチームワーク強化 7
Slide 8
Slide 8 text
各ツールのデフォルト設定ルールには、言語や著名なフレームワークやライブラリの バッドプラクティスを見つけるものもある。Field InjectionよりConstructor Injectionのほ うが良いよ〜みたいなことを教えてくれる。IDEの標準機能としても知られているかも。 Static Application Security Testing (SAST)ツールでは脆弱性を見つけられることがあ る。Find Security Bugs (SpotBugsプラグイン)などを実行すれば、単発的な脆弱性予防 だけでなく長期的な開発者教育にも役立てることができる。決して完全ではないので、他 のテストと組み合わせることが必要。 1.言語やフレームワーク学習支援 8
Slide 9
Slide 9 text
2.早い段階で不具合を見つける Pull Request/Merge Requestで見つける:SonarQubeなどの各種SaaSやReviewdog, Dangerなどを使うと、クリーン環境での解析結果を確認・通知できるので各開発者の環 境に左右されない確認ができる。 コーディング中に見つける:Google Errorprone, SonarLint, 各種IDEプラグインなどを使 うと、コーディング中あるいはコミット時に不具合を見つけることができる。ツールによっ ては自動で修正してくれることもある。 やり過ぎて開発環境が重く遅くなるのは本末転倒なので、チームやプロダクトに合わせ てバランスを考えたい。 9
Slide 10
Slide 10 text
3.チームワーク強化 10 ラクスさんのブログにある SonarQubeの事例がわ かりやすい。 見える化によって「他者による指摘」を減らす、開 発者が自発的に潜在的な問題を発見し修正するこ とが可能になる。 結果として保守容易性やドメインに関する議論な ど、人が議論する価値の高いものに時間を使え る。
Slide 11
Slide 11 text
まとめ 静的解析ツールを導入すると生産性が爆上がり! チーム開発はもちろん、個人開発でも有用なので試してみてください。 11 Twitter: @Kengo_TODA GitHub: @KengoTODA
Slide 12
Slide 12 text
より沼にハマるために 静的解析ツールを「マサカリ自動投擲マシン」として使いたいなら、静的解析ルールの独 自実装スキルがあるとやりやすい。 ● SpotBugsプラグイン実装マニュアル ● Google Errorproneプラグイン実装マニュアル ● SonarQubeプラグイン実装マニュアル 新しめの言語や独自フレームワークがある環境では特におすすめ。 12