調べているうちにそもそもVSCodeにこの拡張機能があったのでやめたが、その作業記録として。
Work
.gitignoreの導入
OS
macOS
IDE
VSCode
Language
Go
VSCodeの設定
Official
spell checker
自動フォーマット(no extension)
フォーマッタ
基本的には対象のファイル拡張子名で検索すればよしなにやってくれる奴らが出てくる。
ただ、それらがない時に関してはPrettierをインストールして設定する必要があると思われる。
Go拡張にデフォルトで入っている。
IntelliSense(自動補完機能)
基本的には対象のファイル拡張子名で検索すればよしなにやってくれる奴らが出てくる。
Go拡張にデフォルトで入っている。
Lint
基本的には対象のファイル拡張子名で検索すればよしなにやってくれる奴らが出てくる。
Go拡張にデフォルトで入っている。
Debug
Go拡張にデフォルトで入っている。
ブラケットのカラーライズ(Bracket Pair Colorizerが非推奨となっていたため載せてます)
docker
リモートコンテナ上で作業するメリット、デメリットはツールの制限。これはメリットにもデメリットにもなる。
VSCode 設定関連
ビルドツール
Make
circle ci
github
Dependabot
Template
prepare template for issue and pull request.
Produce
下調べ
使用ライブラリ・作成フローなど
リファレンス
静的解析をはじめよう - Gopherをさがせ!
型チェックでインターフェースを実装しているか調べよう
メモ
大きく分けてやることは3つ
- 構文解析
- コードの生成
- コードの出力(整形などもこのフェーズ)
- 構文解析には標準ライブラリのgoパッケージを使用
- コード生成、出力にはgithub.com/dave/jenniferを使用
- CLIにはgithub.com/spf13/cobraを使用
ライブラリの動作検証
go/ast
概要
抽象構木の作成をする。
go/types
概要
astは構文技を作るだけで肩情報までは取得してくれない。
それをしてくれるのがtypes。
jennifer
失敗、反省
- コミット絡みはちゃんと確認してからする。(メッセージ内容、変更内容の確認。今まではそこんとこは適当だったのとpushした後に修正するのはめんどい)
- goenvは使わないで良い。goが後方互換を意識して作っているし。そもそもgoenvの開発自体の頻度が低いし、goenv作者本人もそんなに使わないと明言しているとのこと。
感想
qiitaではリンクを直に貼ると何のリンクなのか編集していてわからなくなるし場所も取るのでタイトルをちゃんとつけたほうがいいなと思った。
初めてツールとかをちゃんと設定してやったのでそのあたりの勉強になった。
最後に
Go generate interface stubs
That's all !!!