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
190
Custom Lint Rules で独自のリントルールを作成する
浅沼もっちゃん / Motoharu Asanuma
June 15, 2024
Tweet
Share
Other Decks in Programming
See All in Programming
なぜ「共通化」を考え、失敗を繰り返すのか
rinchoku
1
410
C++20 射影変換
faithandbrave
0
500
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
290
Gleamという選択肢
comamoca
6
750
『自分のデータだけ見せたい!』を叶える──Laravel × Casbin で複雑権限をスッキリ解きほぐす 25 分
akitotsukahara
1
360
AIコーディング道場勉強会#2 君(エンジニア)たちはどう生きるか
misakiotb
1
240
すべてのコンテキストを、 ユーザー価値に変える
applism118
2
470
PostgreSQLのRow Level SecurityをPHPのORMで扱う Eloquent vs Doctrine #phpcon #track2
77web
1
130
LINEヤフー データグループ紹介
lycorp_recruit_jp
0
770
既存デザインを変更せずにタップ領域を広げる方法
tahia910
1
240
明示と暗黙 ー PHPとGoの インターフェイスの違いを知る
shimabox
2
170
型付きアクターモデルがもたらす分散シミュレーションの未来
piyo7
0
800
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
2.7k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
700
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Agile that works and the tools we love
rasmusluckow
329
21k
A designer walks into a library…
pauljervisheath
206
24k
Music & Morning Musume
bryan
46
6.6k
Designing for Performance
lara
609
69k
Practical Orchestrator
shlominoach
188
11k
Building a Modern Day E-commerce SEO Strategy
aleyda
41
7.3k
Faster Mobile Websites
deanohume
307
31k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
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 まとめ