CLOC 로 코드 라인 수 계산하기

LinuxBeginner
지금 연습하기

소개

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

CLOC 도구 인터페이스

CLOC 이해 및 기본 사용법

CLOC (Count Lines of Code) 는 개발자가 여러 프로그래밍 언어에 걸쳐 코드 라인 수, 주석 및 빈 줄을 계산하여 코드베이스를 분석하는 데 도움이 되는 강력한 유틸리티입니다.

이 단계에서는 CLOC 의 기본 구문을 사용하여 프로젝트를 분석하는 방법을 배우겠습니다.

기본 CLOC 명령어

CLOC 사용에 대한 기본 구문은 다음과 같습니다.

cloc [options] <file/directory>

설정 중에 복제된 Flask 프로젝트를 분석하기 위해 CLOC 를 사용해 보겠습니다.

  1. 작업 표시줄에서 터미널 아이콘을 클릭하여 터미널을 엽니다.
  2. Flask 프로젝트 디렉토리로 이동합니다.
cd ~/project/flask
  1. 전체 프로젝트를 분석하기 위해 기본 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 옵션과 쉼표로 구분된 파일 확장자 목록을 사용하면 됩니다.

  1. 아직 Flask 프로젝트 디렉토리에 있지 않다면 해당 디렉토리로 이동합니다.
cd ~/project/flask
  1. 프로젝트에서 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 와 비교할 간단한 프로젝트를 만들어 보겠습니다.

  1. 프로젝트 디렉토리로 이동합니다.
cd ~/project
  1. 간단한 Python 프로젝트를 위한 새 디렉토리를 만듭니다.
mkdir sample_project
cd sample_project
  1. 몇 줄의 코드가 있는 몇 개의 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
  1. 이제 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 보고서를 만들어 보겠습니다.

  1. Flask 프로젝트로 이동합니다.
cd ~/project/flask
  1. CSV 보고서를 생성합니다.
cloc --csv --out=flask_stats.csv .
  1. 생성된 보고서의 내용을 봅니다.
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) 를 사용하여 코드베이스를 분석하고 프로젝트 구성에 대한 귀중한 통찰력을 얻는 방법을 배웠습니다. 다음은 수행한 작업에 대한 요약입니다.

  1. 기본 사용법: 디렉토리를 분석하고 다양한 프로그래밍 언어에서 코드 줄, 주석 및 빈 줄을 계산하는 기본 cloc 명령을 사용하는 방법을 배웠습니다.

  2. 필터링 및 타겟팅: --include-ext를 사용하여 특정 파일 유형에 대한 분석을 집중하고 --exclude-dir을 사용하여 디렉토리를 제외하는 방법을 살펴보았습니다.

  3. 비교 및 보고: --diff 옵션을 사용하여 서로 다른 코드베이스를 비교하고 CSV 및 XML 과 같은 다양한 형식으로 보고서를 생성하는 방법을 배웠습니다.

  4. 고급 분석: 진행 상황 추적, 중복 파일 감지, 패턴 일치 및 파일별 분석과 같은 보다 자세한 통찰력을 제공하는 고급 옵션을 발견했습니다.

CLOC 는 개발자, 프로젝트 관리자 및 코드 감사자가 코드베이스의 크기와 복잡성을 정량화하는 강력한 도구입니다. CLOC 를 효과적으로 사용하면 다음을 수행할 수 있습니다.

  • 프로젝트의 구성을 이해합니다.
  • 코딩 생산성을 추적합니다.
  • 프로젝트 복잡성을 추정합니다.
  • 코드 아키텍처 및 유지 관리에 대한 정보에 입각한 결정을 내립니다.
  • 문서화 및 분석을 위한 보고서를 생성합니다.

이러한 기능은 CLOC 를 코드 분석 및 프로젝트 관리를 위한 모든 개발자 도구 상자에 필수적인 도구로 만듭니다.

✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습