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
어어.. 그렇게 쓰는 거 아닌데.. - 주니어 개바...
Search
ezhoon
March 26, 2024
Technology
0
320
어어.. 그렇게 쓰는 거 아닌데.. - 주니어 개발자의 Custom Lint 개발일지-super-init5
GDG Korea Android- super.init(version=5) 발표 자료
2024.03.24
ezhoon
March 26, 2024
Tweet
Share
More Decks by ezhoon
See All by ezhoon
DroidKnights 2025 - 나도 edgeToEdge 적용하기 싫어. 근데 누군가는 해야 하잖아?
leejihoon
0
620
뉴비의 시점에서 바라본 Kotlin suspend - 네이버 부스트캠프 7기 부스트 컨퍼런스
leejihoon
0
170
Other Decks in Technology
See All in Technology
ソフトとハード両方いけるデータ人材の育て方
waiwai2111
1
470
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
3
380
新米スクラムマスターの4ヶ月 -「スクラムイベントを回しているのに手応えがない」からの脱出 / Four Months as a New Scrum Master — When Scrum Events Were Running, but Nothing Felt Right
owata
0
170
製造業から学んだ「本質を守り現場に合わせるアジャイル実践」
kamitokusari
0
740
AI Agent Agentic Workflow の可観測性 / Observability of AI Agent Agentic Workflow
yuzujoe
2
2k
Node vs Deno vs Bun 〜推しランタイムを見つけよう〜
kamekyame
1
520
プロンプトエンジニアリングを超えて:自由と統制のあいだでつくる Platform × Context Engineering
yuriemori
0
460
AI Agent Standards and Protocols: a Walkthrough of MCP, A2A, and more...
glaforge
0
360
kintone開発のプラットフォームエンジニアの紹介
cybozuinsideout
PRO
0
540
Kusakabe_面白いダッシュボードの表現方法
ykka
0
300
コミュニティが持つ「学びと成長の場」としての作用 / RSGT2026
ama_ch
2
330
ALB「証明書上限問題」からの脱却
nishiokashinji
0
210
Featured
See All Featured
Color Theory Basics | Prateek | Gurzu
gurzu
0
180
Claude Code のすすめ
schroneko
67
210k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
700
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
300
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Music & Morning Musume
bryan
46
7k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
0
89
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.1k
First, design no harm
axbom
PRO
2
1.1k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.5k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.3k
Transcript
GDG Korea Android 이지훈 super.init(version=5) যয.. Ӓۧѱ ॳח Ѣ ইצؘ..
주니어 개발자의 커스텀 린트 개발 일지 ইܻTV(SOOP)
None
Custom Lint 🤔 Custom Lint
Lint에 대한 나쁜 추억 💣 Lint가 뭐길래 내 코드에 훈수를
두는거지?
팀 인원이 10명 이상이라면? opt cmd L 상시로 누르는 사람이
자주 겪는 상황 난 4의 내용만 추가했는데 정렬로 인해 내가 수정하지 않은 범위도 commit에 추가가 됐다… 코드 리뷰 Git Blame
Gson -> Kotlinx.Serialization 그렇다고 Custom Lint를 만들 이유가 있나? 사용
라이브러리 변경
??? 💣 null이 내려 올 수도 있다고요? 기본값 세팅이…?
그럼 Lint를 직접 만들어보자!
결과부터 확인해 보자 🫣 Error 부터 기본 값 세팅까지
구현부 코드 🫣 Error 부터 기본 값 세팅까지
삽질을 할 수도 있는 포인트🤔 내가 찾을 대상을 꼭 확인하자.
🤔 여기 부분이 기본값을 체크하는거 같은데 primaryConstructorParameters 를 사용해서 확인해야 한다는 것을 어떻게 알 수 있을까?
Lint의 대상을 쉽게 찾기 - Plugin 🧾 1. PSI Viewer
Plugin 2. Lint로 검증하고자 하는 곳 지금 현재 찾고자 하는 것은 클래스의 파라미터
Lint의 대상을 쉽게 찾기 debug 🧾 테스트 코드로 디버깅도 가능하다.
1. 테스트 코드에서 debug로 실행 2. 내가 갖고 있는 node에서 어떤 정보로 Lint를 할지 파악 3. 얻은 정보를 바탕으로 Lint 세팅
Lint의 대상을 쉽게 찾기 print 🤔 USAT 구조를 Tree로 볼
수 있다. • node.asRecursiveLogString 으로 tree 확인 • worst, best case의 차이를 보고 어떤 USAT로 구분할지 확인
손쉽게 Lint 제거 quickFix 🙏 • Lint를 만들어서 오류만 보여주는건
불쾌함이 생길수도 있다. • 적어도 Auto Fix가 되게 해주자. 잘못 사용하고 있는 부분을 쉽게 고쳐주자.
테스트 코드를 꼭 구현하자. 🙏 • 어떤 케이스를 테스트 했는지
명시한다. • 리뷰어는 해당 테스트 케이스만 보고 리뷰가 가능하다. • 실제 모듈로 테스트 하는 것보다 훨씬 빠르다. prefix가 꼭 test로 시작해야만 한다. Lint는 테스트 코드가 선택이 아니다. 필수다. expectedText를 전부 예상하고 적기는 어려우니 expectClean으로 테스트 코드를 일부러 실패하고 메세지를 복붙하자.
Custom Lint를 실제 코드에 적용 1. lint 모듈의 gradle에서 IssueRegistry를
task로 등록 2. lint 대상 모듈에 lintCheck로 모듈 등록 Lint Issue 등록으로 마무리 해보자.
Lint가 만들어지기 전에 생겼던 코드들은 어떻게 할까? ./gradlew :module:lint
Error Lint를 무시한다?
Lint를 해결 안 하면 Release Build는 없습니다. 🙏 기본 동작은
Error와 동일하며 Release Build 옵션일 때 해결이 안되어있으면 Build에 실패한다. 릴리즈에 나가면 안되는 코드들은 꼭 막자.
Lint를 해결 안 하면 Release Build는 없습니다. 🙏 릴리즈에 나가면
안되는 코드들은 꼭 막자.
Tip. Lint 쉽게 만들기 Google/ Slack Lint를 참고하자. 둘 다
테스트코드까지 구현이 되어 있다. PSI Viewer를 사용해서 찾자 Debugging 또는 println으로 찾자. 모든 것을 공식문서만으로 해결하려고는 하지 말자.
Custom Lint가 어떤 영향을 줬나?
Custom Lint가 준 영향들 안정적인 앱 사용 나만의 무기 성장
성과 ⬆ 안정적인 개발 Crashlytics ⬇ 개인, 팀, 유저들에게 좋은 영향을 줄 수 있다. 나 팀 유저 새로운 기술
참고자료 Android 공식문서 git slack lints / git slack compose
lints 토스 - SLASH22 박민수 - UX와 DX, 그 모든 경험을 위한 디자인 시스템 드로이드 나이츠 2020 황인성 - Custom Lint 개발기 Android Lint Sample Api Guide Lint Performance