首页 > 编程语言 >统计代码行数简易程序

统计代码行数简易程序

时间:2024-08-01 11:54:01浏览次数:6  
标签:totalLines 代码 List System file println 简易程序 统计 out

public class FileLineCountTest {

    /**
     * 统计项目代码行数
     */
    @Test
    void projectLineCount() {
        long count = countLines("D:\\Users\\guest\\IdeaProjects\\hello", List.of(".java", ".xml", ".sql"), 

        long count2 = countLines("D:\\gitlab_source\\hello-h5", List.of(".vue", ".js", ".html"), List.of("node_modules", "dist"));

        System.out.println("hello: " + count );
        System.out.println("hello-h5: " + count2 );
    }

    /**
     * 统计指定目录下的源代码有多少行
     *
     * @param dir               目录
     * @param suffixIncludes    要统计行数的文件后缀
     * @param subStringExcludes 不统计文件路径里含有特定的字符串
     * @return 该目录下所有符合统计规则的文件的行数
     */
    long countLines(String dir, List<String> suffixIncludes, List<String> subStringExcludes) {

        // 指定要遍历的目录路径
        String directoryPath = dir;
        // 创建Path对象
        Path startPath = Paths.get(directoryPath);

        // 原子长整型,用于累加所有文件的行数
        AtomicLong totalLines = new AtomicLong(0);

        // 遍历目录及其子目录
        try {
            Files.walkFileTree(startPath, new SimpleFileVisitor<Path>() {
                @Override
                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
                    // 读取文件的所有行,并累加行数
                    if (file.toFile().isFile()
                            && suffixIncludes.stream().anyMatch(str -> file.toFile().getName().endsWith(str))
                            && subStringExcludes.stream().noneMatch(str -> file.toFile().getAbsolutePath().contains(str))) {
                        long linesCount;
                        try {
                            linesCount = Files.lines(file).count();
                            totalLines.addAndGet(linesCount);
                        } catch (Exception e) {
                            System.out.println("path:" + file + ", error:" + e.getMessage());
                        }
                    }
                    return FileVisitResult.CONTINUE;
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 输出总行数
        System.out.println("总计包含 " + totalLines.get() + " 行。");
        return totalLines.get();
    }

}

标签:totalLines,代码,List,System,file,println,简易程序,统计,out
From: https://www.cnblogs.com/jiayuan2006/p/18336351

相关文章

  • 代码大全多态
    尽量使用多态,避免大量的类型检查频繁重复出现的case语句有时是在暗示,采用继承可能是种更好的设计选择--尽管并不总是如此   在面向对象编程中,多态是一种允许你通过一个接口使用多种类型对象的方法。在你提供的例子中,使用`switch`或`case`语句来根据不同的形状类型调......
  • 向版权中心提交代码PDF文件时总是无法上传成功,怎么回事?
    在实际的补正提交的操作中遇到了该问题一开始找不到原因上传了十多遍都不行都是传完之后一闪而过显示红色叉号后来发现初次提交的代码pdf却可以正常上传推测是pdf本身格式差异,不符合系统提交要求本次提交的pdf是用wps的“输出为pdf”功能导出的才想到以前也遇到过wps输出......
  • 代码大全继承派生覆盖子程序,但没有任何操作
    派生后覆盖了某个子程序,但在其中没做任何操作,这种情况也值得怀疑这通常表明基类的设计中有错误。 举例来说,假设你有一个Cat(猫)类,它有一个Scratch()(抓)成员函数,可是最终你发现有些猫的爪尖儿没了,不能抓了。你可能想从Cat类派生一个叫scratchiesscat(不能抓的猫)的类,然......
  • 低代码如何借助 K8s 实现高并发支持?
    引言在当今这个数字化时代,互联网的普及和技术的飞速发展使得应用程序面临着前所未有的挑战,其中最为显著的就是高并发访问的需求。随着用户数量的激增和业务规模的扩大,如何确保应用在高并发场景下依然能够稳定运行、快速响应,成为了所有开发者和技术团队必须面对的重要课题。Kuber......
  • 如何在更改代码时自动运行代码?
    我有以下代码,它使用googlegeminiapi处理名为“pdf_texts_79_batch_#.txt”的文件。文件名中的“#”代表一个从1开始并依次递增的数字。我需要这样做,以便我可以运行代码,然后我可以将文件名中的数字更改为onqecutive数字,然后再次运行代码,所有这些都是自主的。例如,我的代码......
  • 将 HTTP 分块编码数据流代码片段从 Node.js 转换为 Python
    我有一个Node.js客户端代码,它将请求发送到HTTP服务器,然后连续接收分块编码数据。这是带有一些流量数据输出的Node.js代码。consthttp=require('http');constoptions={hostname:'...',path:'...',port:...,...};constreq=http.request(......
  • 有人可以帮我完成我作为我的第一个基本游戏编写的代码吗?
    最近,我做了一个项目,基本上是一只飞扬的小鸟(有点),你可以使用箭头键上下左右移动来躲避障碍物,我编写了用于创建和移动障碍物的代码。但它不起作用。我尝试搜索网络和所有内容,但仍然无法解决它。要了解我的期望,请参阅我从头开始制作的这个项目-DodgingGamefromiterto......
  • 在Python中单步执行代码时是否可以引发异常
    当我在IDE(例如PyCharm)中单步执行代码时,我想转储函数的参数(以供以后使用,例如复制它)。计划的场景是在某处设置断点,然后引发异常(这不在我运行的代码中,这就是重点),并捕获它。代码应该如下所示:defexception_cathcher_decorator(func):try:returnfunc(*f_args,**f_k......
  • 代码随想录Day1
    704.二分查找给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4示例2:......
  • vue3 自定义渲染,渲染函数实现,配置渲染render函数,低代码配置自定义渲染函数核心实现
    代码父组件<template><divclass="component-name"><!--全局自动的icon--><Extend:render="render"/></div></template><scriptsetuplang="ts">import{ref,reac......