아직도 프로젝트를 진행하면서 라인수를 중요시 하지는 않겠지만, 그래도 대략적인 지표로 고려할 수는 있습니다. 이런 부분의 전문적인 프로그램이 있는지는 모르겠으나 이전 글()에서 본 find 와 라인수를 셀 수 있는 wc 명령으로 전체 소스의 라인수를 세어보도록 하겠습니다.
Cygwin (http://zeany.net/15) 이 설치되어 있거나, Unix 환경이라고 가정하고 라인수를 셀 프로젝트는 있다고 가정합니다. 여기서는 지금까지 안드로이드에서 살펴봤던 WebView 프로젝트 (https://github.com/zeany/webview.git) 로 세어보도록 하겠습니다.
wc는 기본적으로 단어(word)를 세는 프로그램입니다. 이를 라인수를 세도록 하려면 wc -l 처럼 -l을 옵션으로 주면 됩니다. 하나의 파일의 라인수를 세려면 wc -l a.java 식으로 하면 됩니다.
이를 find 명령과 같이 써본다면 다음처럼 한다고 생각할 수도 있습니다.
find . -name "*.java" -exec wc -l {} \;
결과는 다음과 같습니다. 보면 알겠지만 find로 찾은 파일에 대해 각각 wc -l 을 실행하므로 각 파일의 라인수를 세서 보여줍니다. 전체 파일의 라인수를 알려면 다시 더해야 하는 수 밖에 없습니다.
$ find . -name "*.java" -exec wc -l {} \;
13 ./app/build/generated/source/buildConfig/androidTest/debug/zeany/net/webview/test/BuildConfig.java
13 ./app/build/generated/source/buildConfig/debug/zeany/net/webview/BuildConfig.java
13 ./app/build/generated/source/r/androidTest/debug/android/support/test/espresso/R.java
13 ./app/build/generated/source/r/androidTest/debug/android/support/test/rule/R.java
16 ./app/build/generated/source/r/androidTest/debug/zeany/net/webview/test/R.java
1458 ./app/build/generated/source/r/debug/android/support/v7/appcompat/R.java
42 ./app/build/generated/source/r/debug/com/google/android/gms/R.java
10 ./app/build/generated/source/r/debug/com/google/firebase/firebase_core/R.java
14 ./app/build/generated/source/r/debug/zeany/net/webview/Manifest.java
7117 ./app/build/generated/source/r/debug/zeany/net/webview/R.java
26 ./app/src/androidTest/java/zeany/net/webview/ExampleInstrumentedTest.java
94 ./app/src/main/java/zeany/net/webview/MainActivity.java
14 ./app/src/main/java/zeany/net/webview/MyFirebaseInstanceIDService.java
42 ./app/src/main/java/zeany/net/webview/MyFirebaseMessagingService.java
16 ./app/src/test/java/zeany/net/webview/ExampleUnitTest.java
이를 개선할 방법을 | (파이프) 를 가지고 생각해 보려고 합니다.
단순하게 find . -name "*.java" | wc -l 과 같이 해버리면 이건 프로젝트의 java 파일의 개수를 세버리게 됩니다.
$ find . -name "*.java" | wc -l
15
wc 명령에 대해서 다시 한번 살펴보면 wc 뒤에 여러 개의 파일을 붙여서 실행하면 그 여러 개의 파일 각각에 대해 처리 후 최종적으로 합해서 결과를 보여주는 일을 합니다. 예를 들어 아래처럼 3개의 파일을 인수로 주면 3개의 파일의 총 라인수는 150 라인이라는 것을 알 수 있습니다.
$ cd ./app/src/main/java/zeany/net/webview
$ wc -l MainActivity.java MyFirebaseInstanceIDService.java MyFirebaseMessagingService.java
94 MainActivity.java
14 MyFirebaseInstanceIDService.java
42 MyFirebaseMessagingService.java
150 합계
'Cygwin' 카테고리의 다른 글
find 명령의 -exec 옵션을 이용해 파일 삭제 (2) | 2017.01.16 |
---|---|
Cygwin 드라이브 이동 방법 (3) | 2017.01.13 |
Cygwin 신규 패키지 설치 (1) | 2017.01.11 |
Cygwin 설정 (0) | 2017.01.11 |
Cygwin 다운로드 및 설치 (2) | 2017.01.05 |