上一篇                     
               
			  Java如何快速统计代码行数?
- 后端开发
- 2025-06-01
- 2296
 在Java中获取代码行数可通过以下方法:,1. 使用
 
 
BufferedReader逐行读取文件并计数,2. 利用
 Files.readAllLines()获取行列表大小,3. 借助第三方库如Apache Commons IO的
 FileUtils.lineIterator,4. 注意排除空行和注释行需额外处理逻辑
Java获取代码行数的几种方法详解
在Java开发中,统计代码行数是评估项目规模、监控开发进度的重要方式,下面介绍五种主流方法,涵盖不同场景需求:
IDE内置功能(推荐新手)
适用场景:快速查看单个项目统计
操作步骤(以IntelliJ IDEA为例):
- 右击项目根目录 → “Open in” → “Terminal”
- 执行命令: find . -name "*.java" | xargs wc -l 输出示例: 120 ./src/main/java/Main.java 85 ./src/utils/StringHelper.java Total: 205 lines优势:无需额外工具,支持即时过滤文件类型 
Apache Commons IO(编程实现)
适用场景:需要定制化统计规则(如排除注释)

import org.apache.commons.io.FileUtils;
import java.io.File;
import java.util.Collection;
public class LineCounter {
    public static void main(String[] args) {
        // 配置统计参数
        String dirPath = "src/main/java";
        String[] extensions = {"java"};
        boolean excludeComments = true; // 是否排除注释
        Collection<File> files = FileUtils.listFiles(
            new File(dirPath), extensions, true
        );
        long totalLines = 0;
        for (File file : files) {
            totalLines += countValidLines(file, excludeComments);
        }
        System.out.println("有效代码行数: " + totalLines);
    }
    private static int countValidLines(File file, boolean excludeComments) {
        try (Stream<String> lines = Files.lines(file.toPath())) {
            return (int) lines
                .map(String::trim)
                .filter(line -> !line.isEmpty())
                .filter(line -> !excludeComments || 
                        !(line.startsWith("//") || 
                          line.startsWith("/*")))
                .count();
        } catch (IOException e) {
            return 0;
        }
    }
} 
参数说明:
- extensions:可修改为- {"java", "xml"}统计多类型文件
- excludeComments:- true时跳过单行/多行注释
CLOC工具(专业级统计)
适用场景:多语言项目混合统计
- 下载CLOC:官方GitHub
- 命令行执行: cloc path/to/project --exclude-dir=test,lib 典型输出: Language files blank comment code Java 15 420 380 1250 XML 3 30 0 210优势:  
- 自动识别30+编程语言
- 区分代码/注释/空行
- 支持排除目录(--exclude-dir)
Maven插件(自动化构建)
适用场景:持续集成(CI)环境
- 在pom.xml中添加:<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tlc-maven-plugin</artifactId> <version>1.1</version> <executions> <execution> <goals><goal>count</goal></goals> </execution> </executions> </plugin> </plugins> </build>
- 执行命令: mvn tlc:count 生成报告路径: target/site/lines.html分文件类型统计,包含测试代码单独统计
Gradle插件(Android项目适用)
适用场景:Android或Gradle项目
- build.gradle添加:- plugins { id 'org.kordamp.gradle.stats' version '0.4.0' }
- 执行命令: gradle stats 输出特性:  
- 按源码/测试代码分类统计
- 统计文件大小分布
- 生成HTML/JSON格式报告
统计策略选择建议
| 场景 | 推荐方法 | 精度 | 速度 | 
|---|---|---|---|
| 开发者本地快速查看 | IDE内置 | ||
| 定制化统计需求 | Apache Commons | ||
| 多语言混合项目 | CLOC | ||
| Maven项目CI集成 | TLC插件 | ||
| Gradle/Android项目 | Stats插件 | 
关键提示:统计前需明确需求:
- 是否包含测试代码?
- 是否排除空行/注释?
- 是否需要分模块统计?
引用说明
- Apache Commons IO:官方文档
- CLOC工具:GitHub仓库
- Maven TLC插件:使用指南
- Gradle Stats插件:配置文档
通过合理选择工具,可高效获取精准的代码统计指标,为项目管理提供数据支撑,实际应用中建议结合持续集成,实现代码规模的自动化监控。
 
  
			 
			 
			 
			