【问题标题】:How to count lines in a netbeans project如何计算netbeans项目中的行数
【发布时间】:2012-05-19 01:41:39
【问题描述】:

我有 netbeans 7,我想知道如何计算项目的总行数。我浏览过谷歌,但每次我都只发现死胡同或无法工作的插件。有谁知道怎么数线?

【问题讨论】:

  • 我能够在 NetBeans 7.3 中成功使用 wordcount

标签: netbeans


【解决方案1】:

您可以使用适用于 7.1 的 wordcount 适用于 8.2 的 nb-wordcount

要配置字数,请进入工具->选项->杂项如果您希望 Java 和 Groovy 以外的其他文件匹配,则必须更改 Accept filename

要显示计数窗口,请进入 Window->Open WordCount Window

要显示统计信息,请单击 WordCounting(第二个按钮)。我将显示在Projects (window)中选择的目录的统计信息(它必须是一个包或类似源包或网页的东西,如果你选择项目它就不起作用)。

另外,如果你在 linux 上,你可以简单地执行:

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

【讨论】:

  • wordcount 插件在 Netbeans 7.3.1 中不起作用,我可以在任何范围内单击并始终扫描 0 个文件。
  • 我刚刚用 NetBeans 8.0.2 进行了测试,它运行良好。
  • wordcount 的链接已损坏 ;)
【解决方案2】:

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

  1. 在文件夹或包上右击要查找金额
    注意:不要右键单击项目本身,因为这会导致它也计算所有生成文件中的行数。
  2. 点击FindFind in Files或按CtrlF
  3. 确保Match 下拉菜单设置为Regular Expression
  4. 在搜索框中输入\n
  5. 按查找,您的项目的行数将显示在
    Search Results 选项卡的顶部。

注意:在 NetBeans 中,搜索在 5000 个结果后停止,因此如果您的项目比这更长,那么此方法将不起作用

【讨论】:

  • 嘿。我怎么没想到! :-D
  • 限制为 5000 个匹配项
【解决方案3】:

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

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

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

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

    • 试过了,但它从来没有说任何地方有很多行。
    • 试试这个:Windows > 源代码指标;然后右键单击您的项目并选择 Source Code Metrics。
    • 它适用于我在 Mac OS X 10.7.4 上使用 NetBeans IDE 7.1.2。以防万一,这正是我在使用这个插件时所做的以及我得到的。 ffb777.data.s3.amazonaws.com/sof/…
    • 对于在 Windows 7 上使用 Netbeans 7.2 查看这篇文章的任何人,它都无法开箱即用。 Netbeans 一直在寻找旧版本的 jar,并且除了新版本之外不会。它杀死了我的配置,我必须手动删除插件才能让 Netbeans 重新启动。
    • 搜索 LOC 列(代码行)。
    【解决方案5】:

    @乔纳森, 我喜欢你简单但有用的 LOC 计数程序。当我将它用于我的项目时,我发现扫描仪并不总是计算正确的行数,有时它甚至不会计算特定文件的一行。 一点研究让我看到了这篇文章Java scanner not going through entire file。似乎 Scanner 在不同的编码方面存在一些问题。为了避免这种情况并使程序更可靠,我建议将 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++;
    }
    [...]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-30
      相关资源
      最近更新 更多