35

こんにちは私はnetbeans7を持っていますが、プロジェクトの合計行数を計算する方法を考えていました。私はグーグルを調べましたが、それをするたびに行き止まりか機能していないプラグインしか見つかりません。誰かが行を数える方法を知っていますか?

4

5 に答える 5

32

7.1で動作するwordcount - 8.2で動作するwordcount を使用できます。

単語数を設定するには、Tools-> Options->に移動しますMiscellaneousJavaとGroovy以外のファイルを一致させる場合は、変更する必要があります。Accept filename

カウントウィンドウを表示するには、Window->に移動しますOpen WordCount Window

統計を表示するには、WordCounting(2番目のボタン)をクリックします。で選択したディレクトリの統計を表示しますProjects (window)(パッケージまたはソースパッケージやWebページのようなものである必要があります。プロジェクトを選択すると機能しません)。

また、Linuxを使用している場合は、次のコマンドを実行するだけです。

 find . -name '*.java' | xargs wc -l
于 2012-05-19T14:10:42.060 に答える
24

これは非常に古い質問ですが、プラグインのインストールを伴わないNetBeansプロジェクトの行数を見つける簡単な方法があります。

  1. 行数を確認するフォルダーまたはパッケージを右クリックします。
    注:プロジェクト自体を右クリックしないでください。生成されたすべてのファイルの行数もカウントされます。
  2. またはをクリックするFindFind in Files、を押しCtrlFます。
  3. Matchドロップダウンがに設定されていることを確認してくださいRegular Expression
  4. \n検索ボックスに入力します。
  5. 検索を押すと、プロジェクトの行数が
    Search Resultsタブの上部に表示されます。

注:NetBeansでは、5000件の結果が出ると検索が停止するため、プロジェクトがそれより長い場合、この方法は機能しません。

于 2015-10-22T00:29:59.237 に答える
15

カットアンドペーストの答えを期待していました。だから私は1つ書いた。

編集:数百万行のコードをサポートします。外部ライブラリは必要ありません。

public static void main(String[] args) throws FileNotFoundException {

    final String folderPath = "D:\\Dev\\MYPROJECT\\src";

    long totalLineCount = 0;
    final List<File> folderList = new LinkedList<>();
    folderList.add(new File(folderPath));
    while (!folderList.isEmpty()) {
        final File folder = folderList.remove(0);
        if (folder.isDirectory() && folder.exists()) {
            System.out.println("Scanning " + folder.getName());
            final File[] fileList = folder.listFiles();
            for (final File file : fileList) {
                if (file.isDirectory()) {
                    folderList.add(file);
                } else if (file.getName().endsWith(".java")
                        || file.getName().endsWith(".sql")) {
                    long lineCount = 0;
                    final Scanner scanner = new Scanner(file);
                    while (scanner.hasNextLine()) {
                        scanner.nextLine();
                        lineCount++;
                    }
                    totalLineCount += lineCount;
                    final String lineCountString;
                    if (lineCount > 99999) {
                        lineCountString = "" + lineCount;
                    } else {
                        final String temp = ("     " + lineCount);
                        lineCountString = temp.substring(temp.length() - 5);
                    }
                    System.out.println(lineCountString + " lines in " + file.getName());
                }
            }
        }
    }
    System.out.println("Scan Complete: " + totalLineCount + " lines total");
}

結果は次のようになります。

   (truncated)
   47 lines in WarningLevel.java
Scanning design
 1367 lines in ProcessResultsFrame.java
   83 lines in TableSettingPanel.java
Scanning images
Scanning settingspanel
   67 lines in AbstractSettingPanel.java
  215 lines in AdvancedSettingsPanel.java
   84 lines in BaseSettingsPanel.java
  451 lines in DatabasePanel.java
  488 lines in EmailPanel.java
  458 lines in FTPGUIPanel.java
  482 lines in FTPScheduledTaskPanel.java
  229 lines in GUISettingPanel.java
   87 lines in RootSettingJPanel.java
  722 lines in ServerVisualIdentificationSettingPanel.java
Scan Complete: 123685 lines total

何か足りないものがある場合はお知らせください。できる限り修正いたします。ありがとう!

于 2016-03-18T13:36:04.773 に答える
3

Javaプロジェクトにはソースコードメトリックを使用できます。

于 2012-05-19T02:03:27.810 に答える
0

@ジョナサン、私はあなたのシンプルだが便利なLOCカウントプログラムが好きでした。プロジェクトで使用しているときに、スキャナーが常に正しい行数をカウントするとは限らず、特定のファイルの1行もカウントしない場合がありました。少し調べてみると、Javaスキャナーがファイル全体を調べていないというこの記事にたどり着きました。Scannerには、さまざまなエンコーディングでいくつかの問題があるようです。これを回避し、プログラムの信頼性を高めるために、スキャナーを次のようにBufferedReaderに置き換えることをお勧めします。

[...]
//  final Scanner scanner = new Scanner(file);
//  while (scanner.hasNextLine()) {
//      scanner.nextLine();
//      lineCount++;
//  }
InputStream is = new FileInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
while (br.readLine() != null) {
    lineCount++;
}
[...]
于 2021-07-22T14:00:33.320 に答える