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
gaopin
November 20, 2017
Technology
0
180
静的解析の話
Swift愛好会 Vol.24
gaopin
November 20, 2017
Tweet
Share
More Decks by gaopin
See All by gaopin
draft for devsummi
gaopin1534
0
150
XCTestを目的別で分けるすすめ
gaopin1534
0
3.5k
The swifter way of A/B testing implementation
gaopin1534
2
1.6k
RxSwiftってどうなってるの?
gaopin1534
1
310
Drag'n'Drop'n'iPhone
gaopin1534
0
140
OBJ-C戦線異常なし@DevLOVE 199
gaopin1534
1
140
Other Decks in Technology
See All in Technology
Agent Skils
dip_tech
PRO
0
130
We Built for Predictability; The Workloads Didn’t Care
stahnma
0
150
プロダクト成長を支える開発基盤とスケールに伴う課題
yuu26
4
1.4k
CDK対応したAWS DevOps Agentを試そう_20260201
masakiokuda
1
410
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
1
170
ECS障害を例に学ぶ、インシデント対応に備えたAIエージェントの育て方 / How to develop AI agents for incident response with ECS outage
iselegant
3
320
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
270
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
770
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
380
旅先で iPad + Neovim で iOS 開発・執筆した話
zozotech
PRO
0
100
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
130
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
330
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.2k
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
Chasing Engaging Ingredients in Design
codingconduct
0
110
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
220
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
750
Mobile First: as difficult as doing things right
swwweet
225
10k
Ruling the World: When Life Gets Gamed
codingconduct
0
150
Transcript
੩తղੳͷ͓ @gaopin1534
ࣗݾհ • ߴদฏ(gaopin1534) • ਓࡐܥاۀۈ • iOSྺ1ڧ • ͱPHPͱ͔Rubyͱ͔ͱྑ͠ •
githubͱ͔twitter→@gaopin1534
੩తղੳʁ
੩తղੳͬͯͳ͋ʹʁ • ίʔυΛ࣮ߦͤͣʹߦ͏ݕূ • Lintͱ͔ • ఆྔతʹίʔυͷ࣭ΛଌΔ͜ͱ͕Ͱ͖Δ
Why ੩తղੳʁ
ࣄͷى͜Γࠓ಄
ԶࢯผϓϩμΫτʹδϣΠϯ
ർฐͨ͠ίʔυϕʔε by fltmech98
ੵΈ্͕ΔObj-Cͷࢁ by Kristina D.C. Hoeppner
ԶSwift͕ॻ͖͍ͨ
͜ͷίʔυ͍͔ΜͰ͢ 4XJGUͰॻ͖͑·͠ΐ ࣌4XJGUͩΑ4XJGU #044 ͔͚ۚͯ·ͰΔඞཁ͋Γ·ͯ͠ʁ Մಡੑ͕ͻͲ͍ όά͕༙͖·͢Α͜Ε #044 ແअؾͳײͰۚಈ͔ΜͷͩΑ
https://goo.gl/HSLSZn
ͳΒఆྔతͳΤϏσϯεΛ Ϊϟβʔ͢Εྑ͍ΜͰ͠ΐʁ
※swiftͷެࣜplugin༗ྉ(OSS൛༗ΔΒ͍͚͠Ͳͬͨ͜ͱແ͍)
॥తෳࡶ Cyclomatic Complexity
M=E-N+2P M = ॥తෳࡶ E = άϥϑͷΤοδ N = άϥϑͷϊʔυ
P = ࿈݁͞Εͨίϯϙʔωϯτͷ
॥తෳࡶ • ifจforจ͕ແ͍ίʔυͰ1 • ϑϩʔάϥϑ্औΓ͏Δܦ࿏ͷԼݶ • શͳذཏΛୡ͢ΔͨΊʹඞཁͳς ετέʔεͷͷ্ݶ • ߴ͍΄Ͳڽूੑ͕͍ͱߟ͑ΒΕΔ
͜Μͳͱ͖ʁ ϝιουฏۉ͍͍ײ͡ͳͷʹΫϥεฏۉ͕ߴ͍ → Ϋϥεͷׂ͕దͰͳ͍ ϝιουฏۉͷ࣌Ͱ͢Ͱʹѱ͍ → ϝιουͷ໊͚ɺΛݟ͖͢Ͱʁ ϝιουฏۉ͍͍ײ͡ͳͷʹϑΝΠϧฏۉ͕ߴ͍ → ϑΝΠϧ͚ͳͲΛݟ͔͢ɺ͋Δఔڐ༰
॥తෳࡶ ෳࡶ͞ͷঢ়ଶ όάࠞೖ ҎԼ ඇৗʹྑ͍ߏ Ҏ্ ߏతͳϦεΫ͋Γ Ҏ্
ςετෆՄೳ Ҏ্ ͍͔ͳΔมߋޡ मਖ਼ΛੜΉ http://szk-takanori.hatenablog.com/entry/20111219/p1
ίʔυͷष͍ Code Smell
ίʔυͷष͍ • ͍ΘΏΔʮष͏ʯՕॴͷ • Ұൠతʹʮष͏ʯͱݴΘΕΔύλʔϯ͕ݱΕ ͍ͯΔՕॴΛूܭͯ͘͠ΕΔ • ࢀߟఔʹ͢Δͷ͕ྑ͍͔ͳʔͱ
ॏෳ Duplications
ॏෳ • ίʔυͰॏෳ͍ͯ͠Δߦͷׂ߹ • વɺมߋ࣌ʹҙਤͤ͵Өڹ͕ݱΕΔ֬ʹ ؔͯ͘͠Δ • 0%ʹ͢Δ͜ͱෆՄೳͳͷͰɺҰఆҎԼΛ ࢦ͢ͱྑ͍
ͦͷଞ • Reliablity Rating • ϧʔϧΛͪΌΜͱܾΊͳ͚Εɺࢦ͍ͨ࢟͠ʹܴ͑ͳ͍ɻಋೖίετ͕ߴ ͍ҹ • LOC •
ίʔυྔɻίʔυྔͱόά૬͕ؔ͋ΔͷͰɺଟগؾʹ͢Δͷ٢ɻͨͩɺ ϓϩμΫτͷεέʔϧͱίʔυͷεέʔϧΛൺֱɺѲ͢Δ΄͏͕େࣄ͔ͳͱ • ίϝϯτൺ • ίϝϯτӡ༻ͷϧʔϧ͕͋ΔͳΒ͏ʁతʹ͋·Γ͍Βͳ͍ͱࢥͬͯ·͢ɻ
ͨͩ͠
ղੳ͋͘·Ͱ҆
૬ରతͳӡ༻
ఆੑͱͷֻ͚߹Θͤ
੩తղੳͯ͠ ͰԥΕ͓K
Fin.