iT邦幫忙

鐵人檔案

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

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

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

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

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

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

內容會涵蓋
SwiftSyntax
SourceKitten(SourceKit)

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

掃瞄完 ID 之後~

從昨天的 visitor 的進度來看。 目前還不足以找到 potential leak target Decl Visitor 範例只有示範 class 的版...

2023-09-25 ‧ 由 yume190 分享
DAY 12

再次面對 SourceKitten(CursorInfo)

再次面對 SourceKitten(CursorInfo) 在這個章節會使用 SourceKitten 跟 SourceKit 打交道。 以及唯一會使用的 ap...

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

Ref 變數的來源(key.offset)

今天我們要透過,對變數下 cursorInfo 取得他的原始來源。 where self 針對三種不同情況查詢 self 所在位置。 extension Re...

2023-09-27 ‧ 由 yume190 分享
DAY 14

除非,我們今天將 `[a]` 改寫成 `[a = a]`

除非,我們今天將 [a] 改寫成 [a = a] 除了前面介紹的 visitor 以外 我們可以透過實作 SyntaxRewriter 去更改特定語法 Cl...

2023-09-28 ‧ 由 yume190 分享
DAY 15

改造 SourceKitten 參數

昨天我們順利將 code 進行改寫 但會有幾個問題要處理 首先,我們不打算複寫原本的檔案,反而只是在過程當中偷改 code 問題? 回報的位置會有偏差 C...

2023-09-29 ‧ 由 yume190 分享
DAY 16

判斷變數是 struct

判斷變數是否是 struct 的方式 基本上離不開 USR 取得 USR 我們一樣還是透過 CursorInfo 查詢 a 的資訊 let a = 1 pri...

2023-09-30 ‧ 由 yume190 分享
DAY 17

判斷變數是 weak?

我們一樣還是透過 CursorInfo 查詢 並取得 key.annotated_decl 範例 let a = 1 weak var wa = a prin...

2023-10-01 ‧ 由 yume190 分享
DAY 18

判斷 Closure 是否是 Escape

今天我們一樣還是透過 CursorInfo 查詢 並取得 key.annotated_decl key.annotated_decl 但是,查詢對象改為 Di...

2023-10-02 ‧ 由 yume190 分享
DAY 19

Escaping Closure Detector

繼昨天的判斷目標: @escaping (closure),例: (() -> Void) objc closure(@conventio...

2023-10-03 ‧ 由 yume190 分享
DAY 20

建立 skip list

對一些特殊的 function,我們會想 skip 他 例如 DispatchQueue.main.async 我們需要取得一些很特定的屬性,才會有能力去 sk...

2023-10-04 ‧ 由 yume190 分享