私はJavaScriptファイルの循環的な複雑さを計算するツールを使用しています。
例:
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]+)
それを使用して最小のサイロマティック値を示す数値を抽出することはできません。
ターミナル出力から最小または最大循環複雑度値を出力する方法についてのヘルプが必要ですか?
答え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 "
。)