如何计算netbeans项目中的行数

时间:2012-05-19 01:41:39

标签: netbeans lines-of-code

您好我有netbeans 7,我想知道如何计算项目的总行数。我查看了谷歌,但每次我这样做,我只发现死角或非工作插件。有谁知道如何计算线?

5 个答案:

答案 0 :(得分:31)

你可以使用适用于7.1的 wordcount nb-wordcount

要配置wordcount,请转到工具 - > 选项 - > 其他如果您希望其他文件与Java和Groovy匹配,则必须更改Accept filename

要显示计数窗口,请进入窗口 - > 打开WordCount窗口

要显示统计数据,请单击 WordCounting (第二个按钮)。我将显示在项目(窗口)中选择的目录的统计信息(它必须是包或类似源包或网页的内容,如果您选择项目它将不起作用)。

此外,如果您使用的是Linux,则可以执行:

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

答案 1 :(得分:21)

我知道这是一个非常古老的问题但是有一种更简单的方法可以在netbeans项目中查找不涉及安装插件的行数:

  1. 右键单击要查找其数量的文件夹或包 在中的行注意:不要右键单击项目本身,因为这将导致它计算所有生成的文件中的行。
  2. 点击FindFind in Files或按 Ctrl F
  3. 确保Match下拉菜单设置为Regular Expression
  4. 在搜索框中输入\n
  5. 按查找,项目所包含的行数将显示在Search Results标签的顶部。
  6. 注意:在NetBeans中,搜索在5000结果后停止,因此如果您的项目比这长,那么此方法将无法正常工作

答案 2 :(得分:12)

我希望得到一个剪切和粘贴的答案。所以我写了一篇。

编辑:支持数百万行代码。无需外部库。

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

如果遗漏了什么,请告诉我,我会尽力纠正。谢谢!

答案 3 :(得分:3)

您可以将Source Code Metrics用于Java项目。

答案 4 :(得分:0)

@乔纳森, 我喜欢你简单但有用的 LOC 计数程序。当我在我的项目中使用它时,我发现扫描仪并不总是计算正确的行数,有时它甚至不计算特定文件的一行。 一点研究使我阅读了这篇文章 Java scanner not going through entire file。似乎 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++;
}
[...]