Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GoにおけるCall Graphを用いた 大規模コードベースの影響調査

GoにおけるCall Graphを用いた 大規模コードベースの影響調査

2023/12/01
Go Conference mini 2023 Winter IN KYOTO

Yoshiki Fujikane

December 01, 2023
Tweet

More Decks by Yoshiki Fujikane

Other Decks in Programming

Transcript

  1. 藤兼 由生(ふじを) 所属 • 株式会社サイバーエージェント 2022 新卒 • ABEMA ->

    Developer Productivity室 • PIpeCD maintainer 特徴 • 関西人 フジカネ ヨシキ @ffjlabo @ffjlabo
  2. GoにおけるCall Graph https://pkg.go.dev/golang.org/x/tools/go/callgraph • 複数のアルゴリズムを選択できる ◦ cha ◦ vta ◦

    rta ◦ static • 型の関係性などに着目して近似的に関係性を類推する https://golang.org/x/tools/go/pointer • SSAをベースにしたポインタ解析でもCall Graphを作成可能 • ポインタに着目して関係性を類推する
  3. go-callviz 推しポイント • vtaを除く先程の形式全 てに対応! • グラフの可視化可能 • グラフ分析に特化した 形式でグラフを作成!

    ◦ dot形式 ◦ 他の分析ツールに読み込ま せる事ができる! https://github.com/ondrajz/go-callvis
  4. グラフ探索 • グラフ理論研究などで使われる pythonのライブラリ • dot形式をサポート [1] Aric A. Hagberg,

    Daniel A. Schult and Pieter J. Swart, “Exploring network structure, dynamics, and function using NetworkX”, in Proceedings of the 7th Python in Science Conference (SciPy2008), Gäel Varoquaux, Travis Vaught, and Jarrod Millman (Eds), (Pasadena, CA USA), pp. 11–15, Aug 2008 github: https://github.com/networkx/networ, 論文: [1]