gocloc

 gocloc

46c820d33a8b4ae2bd341bbd027b35b2?s=128

Hideo Hattori

January 18, 2019
Tweet

Transcript

  1. gocloc Umeda.go 2019 Winter 2019.01.18

  2. whoami Hideo Hattori (hhatto) 関西圏でソフトウェアエンジニアをしています Rust, Python, Go, C などが好きです

  3. 今日お話しすること gocloc 作ってみました 得られた知見

  4. gocloc とは?

  5. gocloc ソースコードの行数を数えるツール Perl 実装のcloc がベース

  6. モチベーション cloc が遅いので速いツールが欲しかった Rust でも同じような実装があったのでGo でもどれ くらい高速になるか試したかった

  7. 実行イメージ $ gocloc . ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ Language files blank comment code

    ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ Go 13 164 42 1369 Markdown 1 20 0 149 Makefile 1 5 0 14 TOML 1 2 0 9 YAML 1 2 0 8 ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ TOTAL 17 193 42 1549 ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  8. 主な機能 言語毎のファイル数/ 空行数/ コメント行数/ コード 行数の表示 ファイル毎のファイル数/ 空行数/ コメント行数/ コ

    ード行数の表示( ­­by­file オプション) 出力結果が多様なフォーマットに対応
  9. 得られた知見

  10. 得られた知見 goroutine 使わなくてもGo で実装するだけで動作 が軽量なツールが実装できる シングルバイナリでツールを提供できて配布が楽 ファイルの言語判定にはsrc-d/enry を使うとより高 速になる generaltso/linguist

    がもともと存在していた が、src-d/enry に切り替えたところ高速に動作 した
  11. 得られた知見 boyter/scc というGo の別実装が登場 ファイルの言語判定が自前なので速い goroutine を使っていてgocloc よりさらに高速 gocloc もgoroutine

    使えばさらに高速化できる かもしれない ATS という言語で実装されているPolyglot というツ ールが最速
  12. 合わせて読むと良いかもしれないリンク集 gocloc - fast cloc implementation | hexacosa.net 実装初期にまとめたgocloc 誕生の経緯など

    Sloc Cloc and Code Revisited - Optimizing an already fast Go application | Ben E. C. Boyter Yet Another なGo で実装されたcloc クローン。 gocloc より速い!! Polyglot Is the Fastest Code-counting Tool Available Polyglot という最速のcloc クローン。ATS という 言語で実装されている
  13. Thank you!!