はじめに
CLOC (Count Lines of Code) は、ディレクトリ内のファイルを分析し、さまざまなプログラミング言語におけるコード行数、コメント行数、空白行数をカウントするコマンドラインツールです。プロジェクトの構成を理解し、生産性を測定し、プロジェクトの複雑さを推定しようとする開発者にとって、非常に貴重なリソースです。

CLOC (Count Lines of Code) は、ディレクトリ内のファイルを分析し、さまざまなプログラミング言語におけるコード行数、コメント行数、空白行数をカウントするコマンドラインツールです。プロジェクトの構成を理解し、生産性を測定し、プロジェクトの複雑さを推定しようとする開発者にとって、非常に貴重なリソースです。

CLOC (Count Lines of Code) は、複数のプログラミング言語にわたるコード行数、コメント行数、空白行数をカウントすることにより、開発者がコードベースを分析するのに役立つ強力なユーティリティです。
このステップでは、プロジェクトを分析するために、CLOC をその基本的な構文で使用する方法を学びます。
CLOC を使用するための基本的な構文は次のとおりです。
cloc [options] <file/directory>
セットアップ中にクローンされた Flask プロジェクトを分析するために、CLOC を使用してみましょう。
cd ~/project/flask
cloc .
. は現在のディレクトリを表すため、このコマンドは CLOC に現在のディレクトリとそのサブディレクトリ内のすべてのファイルを分析するように指示します。
コマンドを実行すると、CLOC は次の情報を含むテーブルを表示します。
出力は次のようになります。
56 text files.
56 unique files.
16 files ignored.
github.com/AlDanial/cloc v 1.90 T=0.11 s (428.1 files/s, 72093.6 lines/s)
--------------------------------------------------------------------------------
Language files blank comment code
--------------------------------------------------------------------------------
Python 41 3061 2088 7012
Markdown 5 175 0 314
YAML 2 10 3 84
make 1 21 30 46
TOML 1 6 0 19
--------------------------------------------------------------------------------
SUM: 50 3273 2121 7475
--------------------------------------------------------------------------------
この出力は、Flask プロジェクトのコードベース構成の包括的な概要を示しています。
CLOC を使用すると、特定のファイルタイプを分析したり、分析から特定のファイルを除外したりできます。これは、複数のプログラミング言語を含む大規模なプロジェクトを扱う場合に特に役立ちます。
特定の拡張子を持つファイルのみを分析するには、--include-extオプションの後に、カンマ区切りのファイル拡張子のリストを指定します。
cd ~/project/flask
cloc --include-ext=py .
出力には、プロジェクト内の Python ファイルに関する情報のみが表示されるようになります。
41 text files.
41 unique files.
0 files ignored.
github.com/AlDanial/cloc v 1.90 T=0.05 s (886.0 files/s, 264066.7 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Python 41 3061 2088 7012
-------------------------------------------------------------------------------
SUM: 41 3061 2088 7012
-------------------------------------------------------------------------------
--exclude-dirオプションを使用して、分析から特定のディレクトリを除外することもできます。
cloc --exclude-dir=tests .
このコマンドは Flask プロジェクトを分析しますが、testsディレクトリを除外します。出力には、testsディレクトリ内のファイルを除く、すべてのプロジェクトファイルの統計が表示されます。
34 text files.
34 unique files.
14 files ignored.
github.com/AlDanial/cloc v 1.90 T=0.07 s (372.3 files/s, 45941.8 lines/s)
--------------------------------------------------------------------------------
Language files blank comment code
--------------------------------------------------------------------------------
Python 25 1546 1103 3421
Markdown 5 175 0 314
YAML 2 10 3 84
make 1 21 30 46
TOML 1 6 0 19
--------------------------------------------------------------------------------
SUM: 34 1758 1136 3884
--------------------------------------------------------------------------------
これらのフィルタリングオプションを使用することで、ニーズに最も関連性の高いコードベースの特定の部分に分析を集中させることができます。
CLOC は、さまざまなプロジェクトを比較し、さまざまな形式でレポートを生成する機能を提供します。これらの機能は、時間の経過に伴う変更を追跡したり、異なるコードベースを比較したりするのに特に役立ちます。
Flask と比較するためのシンプルなプロジェクトを作成しましょう。
cd ~/project
mkdir sample_project
cd sample_project
echo 'def hello_world():
"""
A simple function that prints Hello World
"""
print("Hello, World!")
if __name__ == "__main__":
hello_world()' > main.py
echo 'class Calculator:
"""A simple calculator class"""
def add(self, a, b):
"""Add two numbers"""
return a + b
def subtract(self, a, b):
"""Subtract b from a"""
return a - b' > calculator.py
cd ~/project
cloc --diff flask sample_project
出力には、2 つのプロジェクト間のコードメトリクスの差が表示されます。
2 text files.
2 unique files.
0 files ignored.
github.com/AlDanial/cloc v 1.90 T=0.01 s (195.2 files/s, 1756.8 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Python 2 3 4 11
-------------------------------------------------------------------------------
SUM: 2 3 4 11
-------------------------------------------------------------------------------
Diff by file type:
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Python 39 3058 2084 7001
Markdown 5 175 0 314
YAML 2 10 3 84
make 1 21 30 46
TOML 1 6 0 19
-------------------------------------------------------------------------------
SUM: 48 3270 2117 7464
-------------------------------------------------------------------------------
CLOC は、CSV や XML など、さまざまな形式でレポートを生成できます。Flask プロジェクトの CSV レポートを作成しましょう。
cd ~/project/flask
cloc --csv --out=flask_stats.csv .
cat flask_stats.csv
CSV 形式の CLOC 分析が表示されます。
files,language,blank,comment,code,"github.com/AlDanial/cloc v 1.90 T=0.09 s (571.3 files/s, 96263.8 lines/s)"
41,Python,3061,2088,7012
5,Markdown,175,0,314
2,YAML,10,3,84
1,make,21,30,46
1,TOML,6,0,19
50,SUM,3273,2121,7475
この CSV 形式は、スプレッドシートやその他のデータ分析ツールへのインポートに特に役立ちます。
同様に、XML レポートを生成できます。
cloc --xml --out=flask_stats.xml .
これらのレポート機能により、CLOC はコード分析とプロジェクト管理のための多用途ツールとなります。
CLOC は、より詳細でカスタマイズされた分析のためのいくつかの高度なオプションを提供します。これらのオプションを使用すると、コードベースに関するより深い洞察を得ることができます。
大規模なプロジェクトを分析する場合、進捗状況を確認すると便利です。--progress-rateオプションを使用して、進捗状況の更新を表示します。
cd ~/project/flask
cloc --progress-rate=10 .
このコマンドは、10 個のファイルを処理するごとに進捗状況の更新を表示します。
--match-fオプションを使用して、特定のパターンに一致するファイルを分析できます。
cloc --match-f='test_.*\.py$' .
このコマンドは、「test_」で始まる Python ファイルのみのコード行数をカウントします。出力には、Flask プロジェクト内のテストファイルの統計が表示されます。
15 text files.
15 unique files.
0 files ignored.
github.com/AlDanial/cloc v 1.90 T=0.03 s (541.8 files/s, 155547.1 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Python 15 1337 736 3193
-------------------------------------------------------------------------------
SUM: 15 1337 736 3193
-------------------------------------------------------------------------------
この機能は、大規模なプロジェクト内の特定のファイルパターンに焦点を当てたい場合に特に役立ちます。
言語別だけでなく、個々のファイルごとの分析の内訳を表示するには、--by-fileオプションを使用します。
cloc --by-file --include-ext=py src/
このコマンドは、srcディレクトリ内の Python ファイルを分析し、各ファイルの結果を個別に表示します。
7 text files.
7 unique files.
0 files ignored.
github.com/AlDanial/cloc v 1.90 T=0.01 s (648.3 files/s, 180431.1 lines/s)
-------------------------------------------------------------------------------
File blank comment code
-------------------------------------------------------------------------------
src/flask/ctx.py 123 193 539
src/flask/app.py 284 490 999
src/flask/blueprints.py 100 191 421
src/flask/cli.py 126 188 557
src/flask/helpers.py 136 227 538
src/flask/templating.py 28 60 123
src/flask/globals.py 22 63 74
-------------------------------------------------------------------------------
SUM: 819 1412 3251
-------------------------------------------------------------------------------
この詳細なビューは、コードベースのサイズに最も貢献している特定のファイルを特定するのに役立ちます。
これらの高度なオプションにより、CLOC はさまざまなシナリオで包括的なコード分析を行うための多用途ツールとなります。
この実験では、CLOC(Count Lines of Code)を使用してコードベースを分析し、プロジェクト構成に関する貴重な洞察を得る方法を学びました。以下は、達成したことの概要です。
基本的使用法: 基本的なclocコマンドを使用して、ディレクトリを分析し、さまざまなプログラミング言語にわたるコード行数、コメント、および空白行をカウントする方法を学びました。
フィルタリングとターゲティング: --include-extを使用して特定のファイルタイプに分析を集中させ、--exclude-dirを使用してディレクトリを除外する方法を検討しました。
比較とレポート: --diffオプションを使用して異なるコードベースを比較する方法、および CSV や XML などのさまざまな形式でレポートを生成する方法を学びました。
高度な分析: 進捗状況の追跡、重複ファイルの検出、パターンマッチング、ファイルごとの分析など、より詳細な洞察を提供する高度なオプションを発見しました。
CLOC は、開発者、プロジェクトマネージャー、およびコード監査人にとって、コードベースのサイズと複雑さを定量化するための強力なツールです。CLOC を効果的に使用することにより、次のことが可能になります。
これらの機能により、CLOC は、コード分析とプロジェクト管理を行うすべての開発者のツールキットに不可欠なツールとなります。