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
Custom Lint Rules で独自のリントルールを作成する
Search
浅沼もっちゃん / Motoharu Asanuma
June 15, 2024
Programming
0
87
Custom Lint Rules で独自のリントルールを作成する
浅沼もっちゃん / Motoharu Asanuma
June 15, 2024
Tweet
Share
Other Decks in Programming
See All in Programming
Infrastructure as Code でセキュリティを楽にしよう!
konokenj
4
1.1k
o1モデルのプロンプトエンジニアリングって?
ktc_wada
0
390
API Platform for Laravel
dunglas
1
1.1k
Iteratorでページネーションを実現する
sonatard
2
660
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
2
180
KSPの導入・移行を前向きに検討しよう!
shxun6934
PRO
0
710
エンジニア1年目で複雑なコードの改善に取り組んだ話
mtnmr
3
2.6k
[DroidKaigi 2024] Android ViewからJetpack Composeへ 〜Jetpack Compose移行のすゝめ〜 / From Android View to Jetpack Compose: A Guide to Migration
syarihu
1
1.4k
Go製CLIツールGatling Commanderによる負荷試験実施の自動化
okmtz
3
470
How to Break into Reading Open Source
kaspth
2
230
RemixとCloudflare Stack におけるFile Upload
ossamoon
1
110
WEBアプリケーションにおけるAWS Lambdaを用いた大規模な非同期処理の実践
delhi09
PRO
0
130
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
129
8.8k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
227
52k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
30
2.6k
Thoughts on Productivity
jonyablonski
67
4.2k
The Straight Up "How To Draw Better" Workshop
denniskardys
230
130k
The Power of CSS Pseudo Elements
geoffreycrofte
71
5.3k
Scaling GitHub
holman
458
140k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
39
9.2k
The Invisible Customer
myddelton
119
13k
Six Lessons from altMBA
skipperchong
26
3.4k
How STYLIGHT went responsive
nonsquared
93
5.1k
Transcript
Custom Lint Rulesで 独自のリントルールを作成する ※このページは削除して構いません Click 浅沼もっちゃん@momomomo111
・自己紹介 ・Custom Lint Rulesについて ・実装方法 ・まとめ
浅沼もっちゃん / momomomo111 株式会社AbemaTV / Android Based TVのアプリを作ってます。 自己紹介
そもそもLintとは、 Androidプロジェクト のソースファイルを チェックする静的解析 ツール Custom Lint Rulesについて ↑の例だと定義されて いるけどどこからも呼
び出されていないこと について警告 https://android.googlesource.com/platform/frameworks/support/+/HEAD/ docs/lint_guide.md#getting-started
Q. 警告が出て、なにが嬉しいのか? A. 警告が出ないようにコーディングすることで プロジェクトの保守性を高めるため (想定外のことや推奨を開発者に知らせてくれるええやつ) Custom Lint Rulesについて
自分で、「ええやつ」作ってみたくない?
今回つくるええやつ フィーチャーフラグの 期限の形式が ”yyyy-mm-dd”の 形式になってなかったら エラーにしたい 実装方法 https://github.com/abema/flagfit
実装方法 下準備 ・リント用のモジュールの作成 ・Issue作成、IssueRegistryの実装 ・テストを書く ・Detector()の実装
実装方法 リント用のモジュールの作成 プロジェクトのルートから モジュールを作成
依存関係追加 Lintモジュールの build.gradleへ追記 実装方法
Issue作成 警告で出したい文言や プライオリティなどを定義 実装方法
IssueRegistryの実装 先ほど登録したIssueを登録 実装方法
IssueRegistryの実装 com.android.tools.lint.cli ent.api.IssueRegistryに IssueRegistryのフルパス を追加 実装方法
IssueRegistryの実装 Lintモジュールの build.gradleへの 追記も忘れずに 実装方法
Q. なぜテストから書くか? A. 正しくリントが動くかの動作の保証がシンプル ・Lintのライブラリ内で完結 ・差分が明確で、軽量 実装方法
テストを書く testモジュールを切る 実装方法
テストを書く ・LintDetectorTestを継承 して実装 ・DetectorとIssueを設定 実装方法
テストを書く ・独自クラスもここで定義 しなければならない ・expectは一旦適当wipで OK 実装方法
テストを書く ・量が多くなったら TestFileで他のobjectに 書き出してテスト関数は シンプルにできる 実装方法
Detector()の実装 ・ここで構文解析。一致す る条件の場合にメッセージ と一緒にレポート ・終わったらテストを実行 して調整 実装方法
使用するプロジェクト のbuild.gradle ファイルから呼び出し 使用方法
動作確認 ちゃんと期待通りの結果が 出ていることを確認 使用方法
・Custom Lint Rulesを実装することで柔軟にLint を設定できる ・テストから書いて土台を作る方が検証しやすい ・今日話した実装内容は下記リポジトリにあります →https://github.com/abema/flagfit まとめ