Cloc을 사용하여 데비안 패키지에서 코드 줄을 찾는 방법

Cloc을 사용하여 데비안 패키지에서 코드 줄을 찾는 방법

cloc - 코드 줄 수를 계산하는 통계 유틸리티

맨페이지에는 이제 타르볼의 코드 줄 수를 계산하는 데 사용할 수 있다고 언급되어 있습니다.

cloc perl-5.10.0.tar.gz

이제 데비안 패키지는 압축된 타르볼과 같습니다. cloc을 사용할 수 있는 방법이 있나요?

나는 시도했다 :-

[$] cloc cloc_1.60-1.1_all.deb                                                                                                    
       0 text files.
       0 unique files.                              
       1 file ignored.

출력이 올바르지 않습니다. 나는 데비안 패키지에 얼마나 많은 파일이 있는지 보려고 노력했고 다음을 보았습니다:-

[$] dpkg -L cloc                                                                                                                
/.
/usr
/usr/share
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/cloc.1.gz
/usr/share/doc
/usr/share/doc/cloc
/usr/share/doc/cloc/changelog.Debian.gz
/usr/share/doc/cloc/changelog.gz
/usr/share/doc/cloc/copyright
/usr/bin
/usr/bin/cloc

따라서 그것은 cloc의 버그이거나 올바르게 적용되지 않은 것입니다. 기록을 위해 (작기 때문에) cloc의 데비안 패키지를 예제로 다운로드했습니다.

[$] ls -lh cloc_1.60-1.1_all.deb                                                                                             
-rw-r--r-- 1 shirish shirish 88K Jul 24  2015 cloc_1.60-1.1_all.deb

답변을 기대합니다.

답변1

바이너리 패키지( 바이너리 패키지 cloc)가 아닌 소스 패키지에서 실행 해야 합니다 .cloc_1.60-1.1_all.deb

이것은 작동합니다:

dget -d http://httpredir.debian.org/debian/pool/main/c/cloc/cloc_1.60-1.1.dsc
cloc cloc_1.60.orig.tar.gz

그리고 쇼

      12 text files.
       7 unique files.                              
       9 files ignored.

http://cloc.sourceforge.net v 1.60  T=0.05 s (57.3 files/s, 176957.8 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Perl                             2            666            978           7477
make                             1             26             35             75
-------------------------------------------------------------------------------
SUM:                             3            692           1013           7552
-------------------------------------------------------------------------------

dget소스 코드 패키지 다운로드통과하다설명자를 제공하고 -d소스를 추출하지 말라고 지시합니다. 패키지 dget에서 찾을 수 있습니다 .devscripts

답변2

실제로 .deb 파일에 소스 코드가 포함되어 있다고 가정하고 cloc의 --extract-with 스위치를 사용하여 .deb 파일을 사용하여 직접 코드를 계산하는 것이 가능합니다.

cloc --extract-with='dpkg-deb -x >FILE< .' ../cloc_1.60-1_all.deb 
       2 text files.
       2 unique files.                              
       1 file ignored.

https://github.com/AlDanial/cloc v 1.66  T=0.09 s (11.3 files/s, 102181.3 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Perl                             1            661            966           7437
-------------------------------------------------------------------------------

하지만 좀 투박해요. 다음 버전의 cloc(1.68)에서는 .deb 파일에 대한 기본 지원을 추가할 예정입니다.

또한 tarball과 .debs의 개수 차이에 유의하십시오. tarball에는 전체 소스 코드 배포가 포함되어 있는 반면 후자에는 설치할 최종 도구만 포함되어 있습니다. cloc는 소스 코드이므로 계산할 수 있지만, 컴파일된 경우 .deb는 계산할 수 없습니다. 이 트릭은 대부분의 .deb 파일에서 작동하지 않습니다. 대부분의 파일에는 컴파일된 실행 파일이 포함되어 있기 때문입니다.

관련 정보