2

研究用のスクリプトを作成していて、ソース ファイルの総行数を取得したいと考えています。私は cloc の周りに来て、スクリプトでそれを使用するつもりだと思います。

ただし、 cloc は情報が多すぎる結果を返します (残念ながら、私は新しいメンバーであるため、写真をアップロードできません)。ファイル数、行数、空白行数、コメント行数、およびその他のグラフィック表現を提供します。

計算で使用する行数にのみ関心があります。その番号を簡単に取得する方法はありますか (おそらく、コマンド ラインでいくつかのオプションを実行することによって (ただし、利用可能なオプションを調べましたが、私の場合に役立つものは見つかりませんでした))?

結果に対して正規表現を実行して数値を取得することを考えました。ただし、 cloc を使用するのはこれが初めてであり、より良い/専門的な方法があるかもしれません。

何か考えはありますか?

よろしく、アルワ

4

3 に答える 3

0

@BinaryMee と @engineersmnky さん、ご返信ありがとうございます。

私は2つの異なる解決策を試しました.1つは「readlines」を使用して@gicappaから答えを得ました

CSVファイルの長さ(行数)を数えますか?

clocを使用した他のソリューション。コマンドを実行しました

%x{perl #{ClocPath} #{path-to-file} > result.txt} 

結果をresult.txtに保存しました

cloc は結果をグラフィカルな形式で返します (画像をアップロードできません)。また、空白行、コメント行、およびコード行の数も報告します。私が言ったように、私はコード行に興味があります。そのため、ファイルを開き、正規表現を使用して必要な数を取得しました。

content = File.read("#{path}/result.txt")
line = content.scan(/(\s+\d+\s+\d+\s+\d+\s+\d+)/)
total = line[0][0].split(' ').last

ここのコンテンツにはファイルのコンテンツが含まれ、次に行はファイルから次の行を取得します。

C# 1 3 3 17

C# はファイルの言語、1 はファイル数、3 は空白行の数、3 はコメント行の数、17 はコード行の数です。clocのスクリプトからフォーマットの助けを借りました。合計は 17 になります。

このソリューションは、特定のファイルのみを読み取る場合に役立ちます。複数のファイルの行を読み取る場合は、さらにソリューションを追加する必要があります。

うまくいけば、これはそれを必要とする人に役立ちます.

よろしく、アルワ

于 2015-06-05T16:40:16.320 に答える
0

CLOCについてはよくわかりません。ただし、デフォルトのシェル コマンドを使用する価値はあります。この質問を見てください。
コードの行数を個別に取得するには

find . -name '*.*' | xargs wc -l

ディレクトリ内のコードの合計行数を取得します。

(find ./ -name '*.*' -print0 | xargs -0 cat) | wc -l 

特定の拡張子を持つファイルの行数が必要な場合は、*.ext.
*.rb、ルビーの場合。

于 2015-06-04T17:19:04.567 に答える
0

非常に迅速かつ簡単に使用するには、次のようにします。

Dir.glob('your_directory/**/*.rb').map do |file| 
  File.foreach(file).count
end.reduce(:+)

.rbこれにより、ファイルのすべての行your_directoryとそのサブディレクトリがカウントされます。ただし、空白行とコメント行の処理を追加することをお勧めします。詳しくはDir::glob

于 2015-06-04T17:29:49.100 に答える