ABAP, ActionScript, Ada, ADSO/IDSM, AMPLE, ant, Apex Trigger, Arduino Sketch, ASP, ASP.NET, Assembly, autohotkey, awk, blank, Bourne Again Shell, Bourne Shell, C, C shell, c#, C++, C/C++ Header, C:\Windows, CCS, choco, chocolatey, cloc, cloc-1.62.exe, cloc-1.62.pl, cloc.exe, Clojure, ClojureScript, cmake, COBOL, CODE, CoffeeScript, coldfusion, ColdFusion CFScript, COMMENT, css, CUDA, cython, d, Dal, dart, DOS Batch, dtd, ECPP, erlang, expect, F#, focus, fortran 77, Fortran 90, fortran 95, Go, Grails, Groovy, Haml, Handlebars, harbour, Haskell, HLSL, HTML, IDL, install, InstallShield, Java, javascript, JavaServer Faces, JCL, JSON, jsp, kermit, Korn Shell, Kotlin, less, LEX, LISP, Lisp/OpenCL, LiveLink OScript, LUA, M4, make, matlab, maven, Modula3, MSBuild script, mumps, Mustache, MXML, NAnt script, NASTRAN DMAP, Objective C, Objective C++, Ocaml, Oracle Forms, oracle reports, pascal, Pascal/Puppet, Path, Patran Command Language, perl, php, PHP/Pascal, Pig Latin, PL/I, PowerShell, python, QML, r, Racket, Razor, Rexx, RobotFramework, ruby, Ruby HTML, rust, SASS, Scala, sed, Skill, SKILL++, SMARTY, Softbridge Basic, sourceforge, SQL, SQL Data, SQL Stored Procedure, strip-comments, Swift, Tcl/Tk, Teamcenter met, Teamcenter mth, TypeScript, Unity-Prefab, Vala, Vala Header, Velocity Template Language, Verilog-SystemVerilog, VHDL, vim script, Visual Basic, Visualforce Component, Visualforce Page, Windows Message File, Windows Module Definition, Windows Resource File, WiX include, WiX source, WiX string localization, XAML, xBase, xBase Header, xml, xquery, xsd, XSLT, yacc, YAML, 라인수, 코드

이전 포스팅에서 powershell 을 사용한 코드 라인수 세기 방식에 대해 소개한 적이 있는데요~

 

http://iamaman.tistory.com/1577

 

검색을 해보니 역시나…… cloc 라는 프로그램이 있더군요.

 

cloc 의 홈 페이지는 아래와 같습니다.

 

http://cloc.sourceforge.net/

 

또는 이전에 소개했던 Chocolatey 을 사용하여 아래와 같이 설치 할 수 도 있더군요.

 

choco install cloc

 

다운로드 주소는 아래와 같습니다.

 

http://sourceforge.net/projects/cloc/files/cloc/


현재 최신 버전은 1.62 입니다.

 

 

현재 저는 윈도우 64비트를 사용 중이라 위 그림과 같은 페이지에서 cloc-1.62.exe 을 다운로드 받았습니다.


Perl 에 관심이 있는 분들은 cloc-1.62.pl 파일을 다운로드 받아서 소스를 살펴보는 것도 좋은 공부가 될 듯 하네요.

 

다운로드 받은 cloc-1.62.exe 파일을 cloc.exe 라는 이름의 심볼릭 링크로 해서 C:\Windows 와 같이 path 로 설정된 폴더에 넣거나 cloc.exe 로 파일명을 변경 한 후에 path 로 설정된 폴더에 넣습니다.

 

사용법은 굉장히 간단한데요~

 

CMD 창을 연 다음 아래 그림과 같이 cloc 파일명을 넣어 주고 엔터를 때리면~ 각 확장자 별로 code, blank, comment 줄 수 별로 카운트를 해서 목록으로 알려 줍니다.

 

 

위에 그림은 C++ 파일과 헤더 파일 MATLAB 파일의 Code, Blank, Comment 줄 수를 나타내 주는 것을 확인 할 수 있습니다. cloc 는 아래 주소에서 확인 할 수 있는 바와 같이 정말 다양한 언어에 대해 줄 수를 파악해 줍니다.

 

http://cloc.sourceforge.net/#Languages

 

ABAP, ActionScript, Ada, ADSO/IDSM, AMPLE, Ant, Apex Trigger, Arduino Sketch, ASP, ASP.Net, Assembly, AutoHotkey, awk, Bourne Again Shell, Bourne Shell, C, C Shell, C#, C++, C/C++ Header, CCS, Clojure, ClojureScript, CMake, COBOL, CoffeeScript, ColdFusion, ColdFusion CFScript, CSS, CUDA, Cython, D, DAL, Dart, DOS Batch, DTD, ECPP, Erlang, Expect, F#, Focus, Fortran 77, Fortran 90, Fortran 95, Go, Grails, Groovy, Haml, Handlebars, Harbour, Haskell, HLSL, HTML, IDL, InstallShield, Java, Javascript, JavaServer Faces, JCL, JSON, JSP, Kermit, Korn Shell, Kotlin, LESS, lex, Lisp, Lisp/OpenCL, LiveLink OScript, Lua, m4, make, MATLAB, Maven, Modula3, MSBuild script, MUMPS, Mustache, MXML, NAnt script, NASTRAN DMAP, Objective C, Objective C++, OCaml, Oracle Forms, Oracle Reports, Pascal, Pascal/Puppet, Patran Command Language, Perl, PHP, PHP/Pascal, Pig Latin, PL/I, PowerShell, Python, QML, R, Racket, Razor, Rexx, RobotFramework, Ruby, Ruby HTML, Rust, SASS, Scala, sed, SKILL, SKILL++, Smarty, Softbridge Basic, SQL, SQL Data, SQL Stored Procedure, Swift, Tcl/Tk, Teamcenter met, Teamcenter mth, TypeScript, Unity-Prefab, Vala, Vala Header, Velocity Template Language, Verilog-SystemVerilog, VHDL, vim script, Visual Basic, Visualforce Component, Visualforce Page, Windows Message File, Windows Module Definition, Windows Resource File, WiX include, WiX source, WiX string localization, XAML, xBase, xBase Header, XML, XQuery, XSD, XSLT, yacc, YAML

 

--strip-comments 같은 옵션을 사용하면 comment 을 지울 수도 있더군요. 외부에 코드를 보낼 때 종종 활용하게 될 것 같네요.


아래 주소의 글에서 Grep 보다 좋은 검색 툴로 Ack 라는 툴에 대해 소개해 드린 적이 있습니다.

 

http://iamaman.tistory.com/1310

 

그런데 아래 주소에서 확인을 해보니Ack 보다도 빠른 검색 툴이 있더군요~

http://beyondgrep.com/more-tools/

 

오늘 소개해 드릴 툴은 The Platinum Searcher 라는 툴인데요. 구글에서 만든 언어인 Go 로 만들어 졌다고 하더군요. Multi-platforms, multi encodings 을 지원한다 하고~

 

https://github.com/monochromegane/the_platinum_searcher

 

Powershell 에서 측정을 해보니 다음과 같이 Ack 보다 빠르더군요. Ack 는 509.3429 Milliseconds 인데 반해 The Platinum Searcher 는 359.2784 milliseconds 더군요.

 

PS D:\ > Measure-Command {pt ifwinexist -i}

Days : 0

Hours : 0

Minutes : 0

Seconds : 0

Milliseconds : 359

Ticks : 3592784

TotalDays : 4.15831481481481E-06

TotalHours : 9.97995555555556E-05

TotalMinutes : 0.00598797333333333

TotalSeconds : 0.3592784

TotalMilliseconds : 359.2784

 

PS D:\> Measure-Command {ack ifwinexist -i}

Days : 0

Hours : 0

Minutes : 0

Seconds : 0

Milliseconds : 509

Ticks : 5093429

TotalDays : 5.8951724537037E-06

TotalHours : 0.000141484138888889

TotalMinutes : 0.00848904833333333

TotalSeconds : 0.5093429

TotalMilliseconds : 509.3429

 

The Platinum Searcher 는 아래 주소에서 다운로드 할 수 있습니다.

 

https://github.com/monochromegane/the_platinum_searcher/releases

 

현재 윈도우 64 비트라 아래 그림과 같이 pt_windows_amd64.zip 을 다운로드 받았습니다.

 

다운로드 받은 ZIP 파일을 압축해제 후에 pt.exe 파일을 path 로 설정되어 있는 C:\Windows 에 심볼릭 링크로 설정해서 넣었습니다.

 

그럼 이제 어디서든 사용할 수 있겠죠~

 

사용법은 ack 와 동일 합니다. 옵션 등도 거의 대부분 동일해서 ack 을 사용해 보신 분들은 금방 쉽게 사용할 수 있을 거라 생각 되네요.

 

그런데 오늘 이 The Platinum Searcher 을 사용해 보면서 Go 라는 언어에 대해 관심이 생기더군요.

 

아래 주소에서 확인을 해보니 Benchmarks 결과가 나와 있는데~ the Silver Searcher 라는 C 로 만들어진 툴 보다도 빠르더군요.

 

https://github.com/monochromegane/the_platinum_searcher#benchmarks

 

결과적으로 속도는 The Platinum Searcher > the Silver Searcher > Ack 의 순이었습니다.

+ Recent posts