`
猪在小树林
  • 浏览: 1392 次
文章分类
社区版块
存档分类
最新评论

统计.java文件的有效代码行

    博客分类:
  • Java
阅读更多

规则:以";","{","}"结束的行为有效行;
1.接收一个文件或目录;
2.读单个文件或目录下的多个文件;
3.排除package行;
4.排除import行;
5.排除空白行;
6.排除单行注释;
7.排除文档注释;
8.去掉无效";";
9.去掉块注释;

源码如下:

package com.zzxsl.io;

import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by Grover on 05/06/2016.
 */
public final class Statistics {
    /**
     * 数量
     */
    private int count;

    public Statistics(String filePath) {
        File file = new File(filePath);
        if (!file.exists()){ //判断是否存在
            return;
        }

        if (file.isFile()){ //判断是否为文件
            readFile(file);
            return;
        }
        //目录
        findFile(file);

    }

    /**
     * 在目录中找.java文件
     * @param dir
     */
    private void findFile(File dir) {
        for (File file : dir.listFiles()) {
            if(file.isDirectory()){
                findFile(file);
                continue;
            }
            readFile(file);
        }

    }

    /**
     * 读文件
     * @param file
     */
    private void readFile(File file) {
        if(!file.getName().endsWith(".java")){
            return;
        }
        try {
            BufferedReader fileReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
            String line;
            StringBuilder content = new StringBuilder();
            while ((line = fileReader.readLine()) != null){
                line = exclusionInvalidSemicolon(line.trim());
                if(line.startsWith("package")
                        || line.startsWith("import")
                        || line.equals("") //空行
                        || line.startsWith("//")){ //单行注释
                    continue;
                }
                content.append(line);
            }
            exclusionCommentAndCalculate(content.toString());
        } catch (UnsupportedEncodingException e) {
            System.err.println("不支持用指定编码解析!");
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            System.err.println("文件路径不存在!");
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 去掉文档注释和块注释,并计算";"数量
     * @param content
     * @return
     */
    private void exclusionCommentAndCalculate(String content) {
        calculateSemicolonCount(content.replaceAll("/\\*.*?\\*/",""));
    }

    /**
     * 计算";"数量;
     * @param text
     */
    private void calculateSemicolonCount(String text) {
        Matcher matcher = Pattern.compile("[;\\{\\}]").matcher(text);
        while (matcher.find()){
            count += 1;
        }
    }

    /**
     * 去掉无效的分号
     * @param text
     * @return
     */
    private String exclusionInvalidSemicolon(String text) {
        return text.replaceAll("^;*","").replaceAll(";.*//.*",";");
    }

    public int getCount() {
        return count;
    }
}

 

 

分享到:
评论

相关推荐

    java代码统计工具

    在这个场景中,我们关注的是一个名为"java代码统计工具"的应用,它专门用于统计.java文件中的代码行数和注释行数。这个工具包含了三个关键文件:`java代码统计工具.exe`是可执行程序,用户可以直接运行来执行统计;`...

    基于java实现.java文件的重复字符串统计

    该任务成功构建了一个用于统计.java文件中重复字符串的demo程序。经过全面的测试验证,该代码能够稳定并有效地运行,达到了预期的功能目标。在这个demo中,主要逻辑涉及到了对.java文件内容的读取与处理。首先,程序...

    java代码行数统计.zip

    Java代码行数统计工具不仅计数源代码的行数,还可能区分注释、空行和实际执行的代码行。这对于理解代码的可读性和可维护性至关重要。 统计工具的工作原理可能包括以下步骤: 1. 读取Java源代码文件(.java扩展名)...

    maven统计代码行插件

    一个统计代码行的maven插件(会统计配置的后缀类型,统计代码行数,并统计.java文件的 代码行数 注释行数 空白行数 .. 输出结果如) [INFO] \src\main\java总行数 : 6511 lines of code in 63 files [INFO] \src\test\...

    统计你的项目中所有java文件中有效代码量,注解量及空行数

    本话题主要关注如何统计Java项目中的有效代码量、注解量和空行数。我们将通过编写一个Java程序来实现这一功能,并以`CodeCount.java`作为我们的核心工具文件,而`a.java`和`b.java`则是我们用于测试的Java源代码文件...

    代码统计.zip

    2. 行数计算:逐行读取文件内容,通过换行符('\n')计数,排除空行和注释行,得出有效代码行数。 3. 结果汇总:统计每个文件的行数,并将结果整合到报告中,包括文件名、总行数、有效行数等信息。 4. 输出展示:...

    代码行统计(delphi C C++ C# java)

    Java是一种跨平台的面向对象语言,其代码行统计涉及.java文件。与C#类似,可以使用JDepend或SonarQube等工具进行统计,它们不仅能计算代码行,还能分析设计质量、代码复杂性和潜在问题。 代码行统计的价值不仅在于...

    CodeCounter_代码统计.java

    CodeCounter_代码统计,可直接运行的main文件,灵活统计指写目录下的java文件中的代码行数。

    Java简易文件管理器

    3.实现文本类文件(.txt, .java, .ini, .bat, )的预览功能(比如实现对前100行文本在某个小窗口中进行预览)。4.实现文件的重命名功能。5.实现对某个文件夹进行统计功能(如统计文件夹中文件数目)。

    代码行统计(可以对C\C++、Java的源代码进行统计,统计结果包括:总行数、空行数、注释行数和代码行数,统计结果可以以表格的形式显示给用户或另存为文件)

    代码行统计工具用Java语言实现,可以对C\C++、Java的源代码进行统计,统计结果包括:总行数、空行数、注释行数和代码行数,统计结果可以以表格的形式显示给用户或另存为文件。 一 执行环境: 操作系统:WindowsNT/...

    代码行统计工具java源码

    《代码行统计工具Java源码解析》 在软件开发中,代码行数(Lines of Code,简称LOC)常被用作衡量项目规模和工作量的一个参考指标。代码行统计工具可以帮助开发者快速了解项目的整体结构,便于管理和优化。本文将...

    代码统计工具【java】

    例如,输入`cloc --by-file --include-lang=Java .`,其中`.`代表当前目录,`--include-lang=Java`确保只统计Java文件。CLOC会返回一个详细的报告,包括每种类型(如代码、注释、空行)的行数。 3. **PMD和...

    java 统计代码行数

    下面是一个简化的Java代码片段,展示了如何处理Java源文件的代码行统计: ```java import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; public class ...

    Java代码统计工具

    用户可以选择指定的目录,工具会递归地扫描该目录及其所有子目录内的.java文件进行统计。这种功能对于大型项目尤其有用,因为它可以快速处理整个源代码树,而无需手动筛选或分批统计。 4. **注释率**: 注释率是...

    Java版代码统计.zip

    1. **行数统计**:计算整个项目或特定类的代码行数,包括空行、注释行和有效代码行。 2. **文件统计**:列出所有Java源文件及其对应的代码行数。 3. **类和方法统计**:统计项目中的类数量、接口数量以及每个类的...

    java实现统计代码行数

    总结一下,这个Java程序通过遍历目录、读取文件内容、分割行并过滤注释,实现了统计指定目录下所有Java源文件的代码行数。这在软件度量和项目管理中是一个实用的工具,可以帮助我们了解代码库的规模和结构。

    java . php 代码统计插件

    1. **代码行数统计**:插件可以计算源代码中的总行数,包括空行、注释行和实际的代码行。这对于理解项目规模和复杂性非常有帮助。 2. **语言区分**:由于同时支持Java和PHP,插件能够分别统计两种语言的代码行数,...

    代码统计工具 可统计项目行数

    10、支持Java文件 .java 的统计。 11、支持SQL文件 .sql 的统计。 12、支持 *.* 文件类型的自动分析统计。 13、支持文件目录的选择统计方式。 14、支持用户自定义文件统计类型及统计方法。 15、支持Htm,Excel,Csv,...

    java工程代码行计算器

    Java工程代码行计算器是一款实用工具,它专门设计用于统计Java项目的源代码数量,提供有关总代码行、空白行和实际代码行的详细信息。在软件开发过程中,代码行计数可以作为评估项目规模、复杂性以及工作量的一种方法...

Global site tag (gtag.js) - Google Analytics