きり丸の技術日記

技術・エンジニアのイベント・資格等はこちらにまとめる予定です

Rust製のコード行数をカウントするtokei(時計)を使う

コメントを除外し、有効なコードの行数(LoC)をカウントするtokei(時計)というツールがあります。

エンジニアの生産性をコードの行数で測れるわけではありませんが、Rust製のツールということで素振りしてみました。

環境

特徴

以下は、公式の文章を機械翻訳にかけただけの文章です。

  • Tokeiは非常に高速で、数百万行のコードを数秒で数えることができます。12.0.0リリース をチェックして、Tokeiの速度が他のリリースとどのように比較されるかを確認してください。

  • Tokeiは正確であり、Tokeiは複数行コメント、ネストされたコメントを正しく処理し、文字列内のコメントはカウントしません。正確なコード統計を提供します。

  • Tokeiには、150以上の言語とそのさまざまな拡張機能をサポートする、幅広い言語があります。

  • Tokeiは複数の形式(CBOR、JSONYAML)で出力できるため、Tokeiの出力を簡単に保存して再利用できます。これらは、前の実行の統計を別のセットと組み合わせて、東経で再利用することもできます。

  • Tokeiは、MacLinux、およびWindowsで使用できます。プラットフォームにTokeiをインストールする方法については、インストール手順を参照してください。

  • Tokeiは、他のプロジェクトと簡単に統合できるライブラリでもあります。

インストール

tokei公式のGitHubでインストール方法が記載されています。こちらで書いているのは、動作確認用でGitHub Codespacesにインストールした時のコマンドです。

cargo install tokei

使い方

基本的にはコード行数をカウントしたいディレクトリと合わせて使用します。

tokei .
tokei ./src
tokei ./src ./tests

f:id:nainaistar:20210130161613p:plain

カウントの除外設定


自動生成するコードをカウントから除外することもできます。

tokei ./src --exclude * Dto.java

アウトプット出力形式


JSON, YAML, CBORで出力できます。

出力する際は、--outputオプションで設定します。

--output json
--output yaml
--output cbor

バッジの生成


現在のコード量をカウントしたバッジを付与することもできます。

https://tokei.rs/b1/{リポジトリのドメイン}/{リポジトリの所有者}/{リポジトリ名}

私のリポジトリ例だと次のURLになります。

https://tokei.rs/b1/github/hirotoKirimaru/cucumber-sample

デフォルトでは有効なコード行数(LoC)を取得しますが、categoryを指定するとコメント行数の出力等に変更できます。

https://tokei.rs/b1/github/hirotoKirimaru/cucumber-sample?category=comments

終わりに

転職してからはコード行数をカウントしたことはありません。

前職ではコード行数をカウントして実際の生産性を見積もり、改修する際はその数値を参考にして何人月の見積もりを出す、ということはよく行っていました。生産性をコードの行数から導き出すことには価値はないでしょうが…。

それは置いておいて、コードの行数は自分の頑張りとして数値化できるからたまに素振りしてみると面白いですね。

特に私はJavaしか仕事で使ったことはありませんが、Javaは記載しなければならないコード量が多いから嫌いという声も聞いたりします。そういう時に比較材料としてコードの行数カウントツールを使うことで、どの程度多く書かなければならないか、というのも視覚化できると思います。同機能のツールを作って、コードの行数を比較するのも面白そうです。


この記事がお役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。

参考資料

tokeiのGitHubソースコード github.com

その他のコード行数をカウントするツール:cloc github.com