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
Roslyn でフロー解析してみる
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ruccho
May 29, 2026
710
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Roslyn でフロー解析してみる
ruccho
May 29, 2026
More Decks by ruccho
See All by ruccho
WebAssemblyインタプリタを書く ~Component Modelを添えて~
ruccho
1
1.3k
URP の 2D Renderer と たわむれる
ruccho
0
18
Colonies
ruccho
0
680
タイルマップ拡張のススメ / Recommendation of Unity Tilemap Gotanda.unity #14
ruccho
0
3.7k
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
GitHub's CSS Performance
jonrohan
1033
470k
Faster Mobile Websites
deanohume
310
32k
The agentic SEO stack - context over prompts
schlessera
0
880
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Producing Creativity
orderedlist
PRO
348
40k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
4 Signs Your Business is Dying
shpigford
187
23k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
220
Transcript
Roslynでフロー解析してみる るっちょ @ruccho_dev
自己紹介です • Unity で個人ゲーム開発してます • 趣味と仕事で .NET / Unity 向けのライブラリ開発してます
Roslyn • 我々がいつも使っている C# コンパイラ実装のこと • C# で書かれていて NuGet で配布されており、ライブラリとして利用可能
• Analyzer や Source Generator を実装するときによく触る
Roslyn のコード解析インタフェース 具体的 抽象的 SyntaxTree / Syntax SemanticModel / Symbol
ControlFlowGraph / Operation 構文解析 意味論解析 フロー解析など
ControlFlowGraph コード上の命令と、その流れをグラフ構造で表現したオブジェクト (非常に知名度が低い!)
ControlFlowGraphを取得する RegisterOperationAction のコールバックで得られる OperationAnalysisContext に対して GetControlFlowGraph() する
ControlFlowGraphの基本構造 • メソッド内の命令をある程度のまとまりに分割した BasicBlock ◦ ControlFlowGraph.Blocks で BasicBlock のリストが得られる •
BasicBlock 間をつなげる ControlFlowBranch によって遷移構造を表現
ブロック
ブロック 各 Block は2通りの遷移先を持てる • FallthroughSuccessor ◦ デフォルトの遷移先Block • ConditionalSuccessor
◦ 指定条件を満たした場合の移動先Block ◦ 今回はelseへの分岐で使用 ◦ ない場合もある Entry Exit
ブロック Entry Exit 各ブロック内の命令も解析したい!
ブロック
ブロック 各ブロック内の命令も解析したい! Entry Exit
IOperation 各 BasicBlockは命令 (IOperation)のリストを含んでいる
IOperation のツリー構造 ExpressionStatement Invocation Argument BinaryOperator Literal BinaryOperator Literal Conversion
Literal
None
Roslynでフロー解析してみる るっちょ @ruccho_dev