소개
CLOC (Count Lines of Code) 는 디렉토리 내 파일들을 분석하여 다양한 프로그래밍 언어의 코드 라인 수, 주석, 빈 줄 수를 계산하는 명령줄 도구입니다. 개발자가 프로젝트 구성을 이해하고, 생산성을 측정하며, 프로젝트 복잡성을 추정하는 데 매우 유용한 리소스입니다.

CLOC 이해 및 기본 사용법
CLOC (Count Lines of Code) 는 개발자가 여러 프로그래밍 언어에 걸쳐 코드 라인 수, 주석 및 빈 줄을 계산하여 코드베이스를 분석하는 데 도움이 되는 강력한 유틸리티입니다.
이 단계에서는 CLOC 의 기본 구문을 사용하여 프로젝트를 분석하는 방법을 배우겠습니다.
기본 CLOC 명령어
CLOC 사용에 대한 기본 구문은 다음과 같습니다.
cloc [options] <file/directory>
설정 중에 복제된 Flask 프로젝트를 분석하기 위해 CLOC 를 사용해 보겠습니다.
- 작업 표시줄에서 터미널 아이콘을 클릭하여 터미널을 엽니다.
- Flask 프로젝트 디렉토리로 이동합니다.
cd ~/project/flask
- 전체 프로젝트를 분석하기 위해 기본 CLOC 명령을 실행합니다.
cloc .
.은 현재 디렉토리를 나타내므로 이 명령은 CLOC 에게 현재 디렉토리 및 하위 디렉토리의 모든 파일을 분석하도록 지시합니다.
출력 이해
명령을 실행한 후 CLOC 는 다음 정보가 포함된 테이블을 표시합니다.
- Language (언어): 프로젝트에서 감지된 프로그래밍 언어
- Files (파일): 각 언어에 대한 파일 수
- Blank (빈 줄): 빈 줄 수
- Comment (주석): 주석 줄 수
- Code (코드): 코드 줄 수
출력은 다음과 유사하게 표시됩니다.
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 로 특정 파일 형식 분석하기
CLOC 를 사용하면 특정 파일 유형을 분석하거나 분석에서 특정 파일을 제외할 수 있습니다. 이는 여러 프로그래밍 언어를 포함하는 대규모 프로젝트를 작업할 때 특히 유용합니다.
특정 파일 확장자 분석
특정 확장자를 가진 파일만 분석하려면 --include-ext 옵션과 쉼표로 구분된 파일 확장자 목록을 사용하면 됩니다.
- 아직 Flask 프로젝트 디렉토리에 있지 않다면 해당 디렉토리로 이동합니다.
cd ~/project/flask
- 프로젝트에서 Python 파일만 분석하기 위해 CLOC 를 실행합니다.
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
- 간단한 Python 프로젝트를 위한 새 디렉토리를 만듭니다.
mkdir sample_project
cd sample_project
- 몇 줄의 코드가 있는 몇 개의 Python 파일을 만듭니다.
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
- 이제 CLOC 의 diff 기능을 사용하여 이 샘플 프로젝트와 Flask 프로젝트를 비교해 보겠습니다.
cd ~/project
cloc --diff flask sample_project
출력은 두 프로젝트 간의 코드 메트릭 차이를 보여줍니다.
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 보고서를 만들어 보겠습니다.
- Flask 프로젝트로 이동합니다.
cd ~/project/flask
- CSV 보고서를 생성합니다.
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 옵션 사용법
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 를 코드 분석 및 프로젝트 관리를 위한 모든 개발자 도구 상자에 필수적인 도구로 만듭니다.



