iT邦幫忙

鐵人檔案

2023 iThome 鐵人賽
回列表
自我挑戰組

自己的 Leak, 自己抓(swift) 系列

自己自製的小工具回憶錄。

提到 Swift 的 leak 就免不了提到 ARC

因為沒有處理好 ARC strong ref 近一步導致 Retain Cycle

因此就想說能不能透過程式碼檢查,直接找出潛在(或已經是) Leak 的目標

內容會涵蓋
SwiftSyntax
SourceKitten(SourceKit)

鐵人鍊成 | 共 30 篇文章 | 1 人訂閱 訂閱系列文 RSS系列文
DAY 21

實現 detect potential leak(capture)

所以我們將所有的資訊統整起來 變數: origin source ref is weak is struct(尚未導入 IndexstoreDB,簡易判斷版本...

2023-10-05 ‧ 由 yume190 分享
DAY 22

導入 Danger?

到這個階段,capture 的功能大致上說明完畢 前陣子就在想說,還有什麼功能可以附加近來 當時第一個想法是導入 danger 於是開始嘗試導入 danger...

2023-10-06 ‧ 由 yume190 分享
DAY 23

繼續導入 github action

於是我們繼續導入 github ation 預期的期望是在 PR 時,能夠執行一次並留下紀錄 An option to highlight a "N...

2023-10-07 ‧ 由 yume190 分享
DAY 24

番外: swift demangle

之前提到過 swift demangle 除了使用 swift-demangle cli 以外還有其他方式可以使用 其他使用方式 SourceKit de...

2023-10-08 ‧ 由 yume190 分享
DAY 25

實作 Assign Visitor

說明一大段 capture 的實作 最後來講講 assign 的實作部分 AssignClosureVisitor function call 檢查參數:...

2023-10-09 ‧ 由 yume190 分享
DAY 26

番外: IndexStore DB

之前有稍微提到 IndexStore DB Repo IndexStore DB 引入準備 lib 位置 首先是 libIndexStore.dylib 位置...

2023-10-10 ‧ 由 yume190 分享
DAY 27

番外: Derived Path

在開發過程當中,曾經一度想要取得 IndexStore 取得的管道 一個是可以透過 xcodebuild 的某個指令取得 另一個就是自己算 Derived...

2023-10-11 ‧ 由 yume190 分享
DAY 28

概念驗證 Test Leak

之前有一陣子,有使用 test 來驗證 leak 的文章出沒 這種用 test 來找 leak 的方式 以個人的想法來說,還不如直接使用 Xcode Instr...

2023-10-12 ‧ 由 yume190 分享
DAY 29

虛驚一場 Capture List

今天剛好在 X 看到有人出問題 請解釋下面的 code 為何不能 compile 解 最後作者拋出 swift 文件 Capture List 過程中 也順...

2023-10-13 ‧ 由 yume190 分享
DAY 30

結語

最後 還是分享一下成品 LeakDetect 安裝方式 brew install mint mint install yume190/LeakDetect 使...

2023-10-14 ‧ 由 yume190 分享