저는 자바스크립트 파일의 순환적 복잡성을 계산하는 도구를 사용하고 있습니다.
예:
jsc --minimal test.js
이 명령은 다음과 같은 출력을 제공합니다.
┌─────────────────────┬─────┬────────────┬─────────────────────┐
│ File │ LOC │ Cyclomatic │ Halstead difficulty │
├─────────────────────┼─────┼────────────┼─────────────────────┤
│ /home/shray/test.js │ 23 │ 4 │ 10 │
└─────────────────────┴─────┴────────────┴─────────────────────┘
Cyclomatic: min 4 mean 4.0 max 4
Halstead: min 10 mean 10.0 max 10
이제 나는
jsc --minimal test.js | grep "Cyclomatic:"
이것은 나에게 출력을 제공합니다
Cyclomatic: min 4 mean 4.0 max 4
이제 정규식이 있지만 Cyclomatic:[\s]*min[\s]+([0-9]+)
이를 사용하여 가장 작은 Cylomatic 값을 표시하는 숫자를 추출할 수 없습니다.
터미널 출력에서 최소 또는 최대 순환 복잡도 값을 출력하는 방법에 대한 도움이 필요합니까?
답변1
행의 형식이 항상 동일하다는 것을 알고 있다면 simple을 사용할 수 있습니다 cut
.
cut -d' ' -f3
또는 awk
첫 번째 작업을 포함하여 모든 작업을 귀하와 함께 수행하십시오 grep
.
awk '$1 == "Cyclomatic:" {print $3}'
행이 변경될 수 있는 경우 다음을 사용하십시오 sed
.
sed -E 's/.*( min )([0-9]+).*/\2/'
또는 grep -P
다음이 있는 경우:
grep -Po ' min \K[0-9]+'
또는 정상 grep
:
grep -o 'min [0-9]\+'
이는 반환되며 min 4
쉽게 필터링하여 다른 항목을 추가 grep
하거나cut
grep -o '[0-9]\+$'
# or
cut -d' ' -f2
답변2
Linux에서는 lookbehind를 사용합니다( -P
Gnu grep에서만):
jsc --minimal test.js | grep -Po '(?<=Cyclomatic: min )\d+'
(이렇게 하면 다음에 나오는 첫 번째 숫자 세트가 추출됩니다 "Cyclomatic: min "
.)