Skip to content

Latest commit

 

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Goにおけるモダンな静的解析ツールの作り方

はじめに

このハンズオンでは、Goにおけるモダンな静的解析ツールの作り方を学びます。 基本的なGoの文法などは、このハンズオンでは扱いません。

事前準備

このハンズオンを行うには、以下の準備が必要です。

  • Go 1.26以上のインストール

学べることと学べないこと

このハンズオンを行うと以下のことが学べます。

  • 静的解析ツールの基本的な作り方とgo vetから動かす方法
  • 抽象構文木(Abstract Syntax Tree, AST)の走査
  • 修正案を提示して自動で適用できるようにする方法
  • 型情報を使って検出の精度を上げる方法
  • Analyzerに共通処理をまとめる仕組み

このハンズオンでは、fmt.Errorf関数やerrors.New関数の使用を検出するerrvetという静的解析ツールを、ステップを進めながら作っていきます。

一方、学べないことは以下のとおりです。

  • Goの開発環境のインストール方法
  • IDEやエディタの設定
  • 基本的な文法

ハンズオンのやりかた

skeletonディレクトリ以下に問題があり、5つのステップに分けられています。 STEP 01からSTEP 05までステップごとに進めていくことで、Goにおけるモダンな静的解析ツールの作り方に関する知識が学べます。

各ステップに、READMEが用意されていますので、まずはREADMEを読みます。 READMEには、そのステップを理解するための解説が書かれています。

READMEを読んだら、ソースコードを開きTODOコメントが書かれている箇所をコメントに従って修正して行きます。 TODOコメントをすべて修正し終わったら、READMEに書かれた実行例に従ってプログラムをコンパイルして実行します。

途中でわからなくなった場合は、solutionディレクトリ以下に解答例を用意していますので、そちらをご覧ください。

目次

ハンズオンの開催や資料の扱いについて

この資料を元にハンズオンを開催するために@tenntennの許可などはいりません。 好きに開催してください。 @tenntennの行ける範囲であれば、開催するから解説して欲しいという依頼もウェルカムです。

なお、forkして変更してもらっても構いませんが、できればPRをいただけると嬉しいです。 資料に間違えを発見した方もissueやPRを頂ければ対応します。

ライセンス

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages