精华内容
下载资源
问答
  • 这是个 Rust 程序,比 cloc 快一百多倍。支持 .gitignore 什么的所以不数生成的代码。下边是三年前的回答:cloc。是个 Perl 脚本。示例:>>> cloc .146 text files.137 unique files.775 files ignored....

    嫌 cloc 慢的可以用 loc。这是个 Rust 程序,比 cloc 快一百多倍。支持 .gitignore 什么的所以不数生成的代码。

    下边是三年前的回答:

    cloc。是个 Perl 脚本。

    示例:

    >>> cloc .

    146 text files.

    137 unique files.

    775 files ignored.

    http://cloc.sourceforge.net v 1.60 T=3.76 s (23.6 files/s, 3187.4 lines/s)

    -------------------------------------------------------------------------------

    Language files blank comment code

    -------------------------------------------------------------------------------

    Python 82 1472 705 8485

    C 5 84 28 626

    YAML 1 0 0 588

    make 1 3 0 7

    -------------------------------------------------------------------------------

    SUM: 89 1559 733 9706

    -------------------------------------------------------------------------------

    展开全文
  • I/O流文件操作实例 ...获得所有".java"文件,再去读取内容,每读一行则统计行数+1。 实现代码 import java.io.BufferedReader; import java.io.File; import java.io.FileFilter; import java.io.FileReader...

    I/O流文件操作实例

    实现思路:程序源代码都是纯文本文件,因此我们可以使用字符流去读取文本。从根目录下递归遍历,
    获得所有".java"文件,再去读取内容,每读一行则统计行数+1。

    实现代码

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileFilter;
    import java.io.FileReader;
    import java.io.IOException;
    
    public class SearchFile {
    	int line = 0;					//行数
    	int num = 0;
    	public SearchFile() {
    	}
    	     
    	public void dfs(File root) throws IOException {		//从根目录开始递归遍历
    		if(root.isDirectory()) {
    			File[] fileList = root.listFiles(new FileFilter() {
    				public boolean accept(File pathname) {
    					if(pathname.isDirectory()||pathname.getName().endsWith("java"))   //过滤非目录和非.java文件
    						return true;
    					else
    						return false;
    				}
    			});
    			
    			for(File f:fileList) {
    				if(f.isDirectory())
    					dfs(f);								//递归
    				else {
    					countCode(f);						//统计
    					num++;
    				}
    			}
    		}		
    	}
    	 
    	
    	public void countCode(File file) throws IOException {		//字符流读取java文件字符行数
    		FileReader rd = new FileReader(file);
    		BufferedReader brd = new BufferedReader(rd);    //使用缓冲包装类,提高读取速度
    		String str = null;
    		while((str=brd.readLine())!=null) {
    			if(str.length()!=0)									//过滤空白行
    				line++;												//行数+1
    		}
    		brd.close();
    		rd.close();													//关闭流
    	}
    	
    	public int getLine() {
    		return line;
    	}
    	public int getNum() {
    		return num;
    	}
    }
    
    

    调用此类:

    import java.io.File;
    import java.io.IOException;
    
    import com.th.model.SearchFile;
    
    public class th {
    
    	public static void main(String[] args) {
    		long a = System.currentTimeMillis();
    		File file = new File("C:\\Users\\LX\\Desktop\\Mycode\\eclipse-workspace");  //根目录
    		SearchFile sf = new SearchFile();
    		try {
    			sf.dfs(file);
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		System.out.println("目录 :"+file.getAbsolutePath());
    		System.out.println("       共有"+sf.getNum()+"个java文件");
    		System.out.println("       代码行数总计"+sf.getLine()+"行");
    		System.out.println("       耗时 "+(System.currentTimeMillis()-a)+"毫秒");
    	}
    }
    

    在这里插入图片描述
    运行截图

    展开全文
  • 统计代码行数

    2017-01-15 12:33:00
    学校内学习的高级语言程序设计这门课程教我们的都是C语言对内存的操作,而老师布置的这份作业要求我们统计代码行数,实际上是对文件的操作。而这个知识正是我所欠缺的,正好有博客园这一个平台我就写一篇随笔来...

    C语言对文件的操作


    1.前言

    学校内学习的高级语言程序设计这门课程教我们的都是C语言对内存的操作,而老师布置的这份作业要求我们统计代码的行数,实际上是对文件的操作。而这个知识正是我所欠缺的,正好有博客园这一个平台我就写一篇随笔来记录自己如何实现统计代码,也来帮助自己完善这一方面的知识,也欢迎与我有相同疑问的同学借鉴。

    2.需要用到的函数

    1.fopen(打开文件)

    表头文件:#include < stdio.h >

    定义函数:FILEfopen(const char path,const char * mode);

    函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。

    文件打开失败时,函数会返回null值。

    mode有下列几种形态字符串:
    • r 打开只读文件,该文件必须存在。
    • r+ 打开可读写的文件,该文件必须存在。
    • rt只读打开一个文本文件,只允许读数据。
    • w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
    • w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

    范例

    #include<stdio.h>
    int main()
    {
    FILE *fp;
    fp=fopen(noexist,"a+"");
    if(fp==NULL) return;
    fclose(fp);
    }

    2.fclose(关闭文件)

    函数说明 fclose()用来关闭先前fopen()打开的文件。此动作会让缓冲区内的数据写入文件中,并释放系统所提供的文件资源。

    返回值 若关文件动作成功则返回0,有错误发生时则返回EOF并把错误代码存到errno。

    3.fgetc(由文件中读取一个字符)

    函数说明 fgetc()从参数stream所指的文件中读取一个字符。若读到文件尾而无数据时便返回EOF。


    以上便是统计行数所需要用到的函数,如需了解C语文对文件操作的全部函数,可以参考http://www.jb51.net/article/37688.htm

    3.我的代码

    第一版

    #include<stdio.h>
    int main()
    {
        int t,sum=0,i;
        FILE *fp;
        char filename[100000];
        printf("请输入文件名或文件地址:");
        scanf("%s",filename);
        fp=fopen(filename,"rt"); 
        while((t=fgetc(fp))!=EOF)
        {
            if(t=='\n')
            {
                sum=sum+1;
            }
        }
        fclose(fp);
        printf("%d\n",sum);
        return 0;
    }

    第一版的代码已经基本可以实现对文件行数的统计,但是只能统计一次,如需多次统计需关闭exe再打开,无疑减少了程序的可用性.

    第二版

    #include<stdio.h>
    int main()
    {
        int i,t,sum=0;
        FILE *fp;
        char filename[100000];
        for(i=0;;i++)
        {
           printf("请输入文件名或文件地址:");
           scanf("%s",filename);
           fp=fopen(filename,"rt"); 
           if(fp!=NULL)
          {
               while((t=fgetc(fp))!=EOF)
              {
                  if(t=='\n')
                 {
                    sum=sum+1;
                 }
               }
           }
        else continue;
        fclose(fp);
        printf("%s共%d行代码\n",filename,sum);
       } 
       return 0;
    }

    第二版的代码加入了一个for的无限循环来实现多次统计代码行数,同时通过一个判断语句来判断输入的文件名或者文件地址是否可行.但是我又想到,既然是统计自己C语言一共写了多少行代码,是否可以再加入一个功能,把多次统计的代码做一个加法.

    第三版

    #include<stdio.h>
    int main()
    {
        int i,t,sum=0,lines[100000];
        FILE *fp;
        char filename[100000];
        for(i=0;;i++)
        {
           printf("请输入文件名或文件地址:");
           scanf("%s",filename);
           fp=fopen(filename,"rt"); 
           if(fp!=NULL)
          {
               while((t=fgetc(fp))!=EOF)
              {
                  if(t=='\n')
                 {
                    lines[i]=lines[i]+1;
                 }
              }
           }
        else 
        {
        printf("文件名或文件地址输入错误\n");continue;
        }
        fclose(fp);
        printf("%s共%d行代码\n",filename,lines[i]);
        sum=sum+lines[i];
        printf("截止目前一共%d行代码\n",sum);
       } 
       return 0;
    }

    第四版

    #include<stdio.h>
    int main()
    {
        int i,t,sum=0,lines[100000];
        FILE *fp;
        char filename[261];
        for(i=0;;i++)
        {
           printf("请输入文件名或文件地址:");
           gets(filename);
           fp=fopen(filename,"rt"); 
           if(fp!=NULL)
          {
               while((t=fgetc(fp))!=EOF)
              {
                  if(t=='\n')
                 {
                    lines[i]=lines[i]+1;
                 }
              }
           }
        else 
        {
        printf("文件名或文件地址输入错误\n");continue;
        }
        fclose(fp);
        printf("%s共%d行代码\n",filename,lines[i]);
        sum=sum+lines[i];
        printf("截止目前一共%d行代码\n",sum);
       } 
       return 0;
    }

    考虑到文件名有可能含有空格所以把scanf函数换成gets函数,

    Windows 系统的文件名受两方面的限制

    1、文件名长度最大为255字符(其中包括文件扩展名)。

    2、文件的全路径名长度最大为260字符。

    以下为github连接:https://github.com/Travaill/homework1lines

    感谢畅畅学长的建议

    转载于:https://www.cnblogs.com/linshen/p/6286921.html

    展开全文
  • 昨天突发奇想,想统计下这些年到底写过多少行代码,于是做了一个这个小程序统计代码行数。老规矩,先上图。 比较惭愧,写了两年只有2万多行。那我们还是进入下一项吧。 界面搭建我也不说了,我就讲一下思路和核心...
  • (2008年4月25日23:43) ... 这个小程序能够统计某目录及其子目录下java文件代码行数,注释行数,空格行数以及各自所占百分比。 源程序如下: [code="java"]package linenum; import java.awt.*; im...
    (2008年4月25日23:43)
    最近在学java,写了一些代码,想统计自己到底写了多少代码,但统计起来比较烦琐,于是想写个程序方便以后统计。
    这个小程序能够统计某目录及其子目录下java文件代码行数,注释行数,空格行数以及各自所占百分比。
    源程序如下:
    package linenum;

    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.text.*;
    import javax.swing.*;

    public class LineNum extends JFrame
    {
    private JPanel topPanel = new JPanel();
    private JPanel bottomPanel = new JPanel();
    private JButton fileChoose = new JButton("选择目录");
    private JTextField fileField = new JTextField(20);
    private JFileChooser fc = new JFileChooser("选择目录");
    private JTextArea filePathArea = new JTextArea(5 , 20);
    //判断是否属于"/* */注释"
    private boolean isExplainStatus = false;

    //存储代码总行数值
    private int totalCount = 0;
    //存储注释总行数值
    private int explainCount = 0;
    //存储空行总行数值
    private int spaceCount = 0;
    //存储单个文件行数值
    private int count = 0;
    private InputStream input = null;
    private BufferedReader br = null;

    private String totalPath = "";
    private DecimalFormat myFormat = null;

    public LineNum(String title)
    {
    super(title);
    //设置面板
    Container container = getContentPane();
    container.setLayout(new BorderLayout());
    topPanel.setLayout(new GridLayout(1 , 2));
    bottomPanel.setLayout(new BorderLayout());
    topPanel.add(fileChoose);
    topPanel.add(fileField);
    bottomPanel.add(new JScrollPane(filePathArea));
    filePathArea.setText("java文件:");
    container.add(topPanel , BorderLayout.NORTH);
    container.add(bottomPanel , BorderLayout.CENTER);

    //添加选择目录监听,默认获取的是选择文件所在的父目录,程序统计对象是此父目录及其子目录下的所有java文件
    fileChoose.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e)
    {
    int result = fc.showOpenDialog(LineNum.this);
    if(result == JFileChooser.APPROVE_OPTION)
    {
    String path = fc.getSelectedFile().getAbsolutePath();
    path = path.substring(0 , path.lastIndexOf("\\"));
    fileField.setText(path);
    File file = new File(path);
    CalculateLineNum(file);
    }
    }
    });
    }

    /*
    * 计算并显示统计信息
    */
    private void CalculateLineNum(File file)
    {
    if(file.exists())
    {
    displayLineNum(file);
    myFormat = (DecimalFormat)NumberFormat.getPercentInstance();
    myFormat.applyPattern("0.00%");
    if(totalCount != 0)
    {
    double programPercent = (double)(totalCount - explainCount - spaceCount)/(double)totalCount;
    double explainPercent = (double)explainCount/(double)totalCount;
    double spacePercent = (double)spaceCount/(double)totalCount;
    filePathArea.setText(filePathArea.getText() + "\n" + " 总行数:" + totalCount + "行");
    filePathArea.setText(filePathArea.getText() + "\n" + " 程序行数:" + (totalCount - explainCount - spaceCount) + "行,百分比:"+myFormat.format(programPercent));
    filePathArea.setText(filePathArea.getText() + "\n" + " 注释行数:" + explainCount + "行,百分比:"+myFormat.format(explainPercent));
    filePathArea.setText(filePathArea.getText() + "\n" + " 空行行数:" + spaceCount + "行,百分比:"+myFormat.format(spacePercent));
    }
    else
    {
    filePathArea.setText(filePathArea.getText() + "\n" + " 总行数:" + totalCount + "行");
    }
    }
    }

    //循环访问目录及子目录,统计代码总行数,注释行数及空行行数
    public void displayLineNum(File file)
    {
    totalPath+= " || " + file.getName();
    String[] subPaths = file.list();
    if(subPaths.length == 0)
    {
    totalPath = totalPath.substring(0 , totalPath.lastIndexOf(" || "));
    return;
    }
    //循环对子目录进行访问计算行数处理
    for(int i = 0 ; i < subPaths.length ; i++)
    {
    count = 0;
    File subFile = new File(file.getAbsolutePath() + "\\" + subPaths[i]);
    if(subFile.isFile())
    {
    String subFilePath = subFile.getAbsolutePath();
    String extendName = subFilePath.substring(subFilePath.lastIndexOf(".") + 1 , subFilePath.length());
    if(!extendName.equals("java"))
    {
    continue;
    }
    try
    {
    input = new FileInputStream(subFile);
    BufferedReader br = new BufferedReader(new InputStreamReader(input));
    String lineValue = br.readLine();
    while(lineValue != null)
    {
    count++;
    //对两种不同类型注释分别处理,对空行用空字符串来判断
    if(isExplainStatus == false)
    {
    if(lineValue.trim().startsWith("//"))
    {
    explainCount++;
    }
    if(lineValue.trim().equals(""))
    {
    spaceCount++;
    }
    if(lineValue.trim().startsWith("/*"))
    {
    explainCount++;
    isExplainStatus = true;
    }
    }
    else
    {
    explainCount++;
    if(lineValue.trim().startsWith("*/"))
    {
    isExplainStatus = false;
    }
    }
    lineValue = br.readLine();
    }
    totalCount+= count;
    String totalPath1 = totalPath + " || " + subFile.getName();

    //显示单个文件的行数
    filePathArea.setText(filePathArea.getText() + "\n" + totalPath1 + " 行数:" + count + "行--------totalCount:"+ totalCount);
    br.close();
    input.close();
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }
    else
    {
    //循环调用displayLineNum函数,实现统计子目录行数数据
    displayLineNum(subFile);
    }
    }
    totalPath = totalPath.substring(0 , totalPath.lastIndexOf(" || "));
    }

    public static void main(String args[])
    {
    LineNum lineFrame=new LineNum("java程序行数统计");
    lineFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    lineFrame.setBounds(212,159,600,420);
    lineFrame.setVisible(true);
    lineFrame.setResizable(false);
    }
    }
    展开全文
  • 我用下面的代码获取行数,但是程序被挂起。怎么回事呢? private int countbaglist() { int count = 0; SQLiteDatabase db = datasource.getWritableDatabase(); Cursor cursor = db.rawQuery( ...
  • 朋友们大家好,如何计算多个文件的代码行数,如果一个一个去计算,那一定会很烦琐,如有用一个小工具来统计就很简单了,也很省心,小弟在此献上自已在开发过程中制作的一个计算文件代码行数的小程序供大家参考 //...
  • StatSVN是一个Java写的开源代码统计程序,从statCVS移植而来,能够从Subversion版本库中取得信息,然后生成描述项目开发的各种表格和图表。比如:代码行数的时间线;针对每个开发者的代码行数;开发者的活跃程度;...
  • 本文由我司收集整编,推荐下载,如有疑问,请与我司联系Python入门之用Python统计代码行2018/05/024Pycharm每天都要写很多代码,如何统计每天的代码行数呢?作为一个目标十万行的coder,要想想办法!题目:有个目录...
  • Pycharm每天都要写很多代码,如何统计每天的代码行数呢?作为一个目标十万行的coder,要想想办法! 题目:有个目录,里面是你自己写过的程序,统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。 ...
  • 如何统计文件的行数 ? 如何将归档压缩文件释放恢复至指定目录 ? 在 vi 编辑器中如何快速复制粘贴多行文字 课程回顾 3/28 ? 熟悉 Linux 中的软件封装类型 ? 学会使用 RPM 包管理器工具 ? 学会从源代码包编译安装...
  • 关于工作量的统计?

    2008-01-25 10:15:00
    最近进了一个新的项目组,今天看到工作成果里的统计竟然是以代码行数作为单位的。...但是在这种以代码行数统计工作量的方式下,如何才能体现我的价值呢? 如果不代码重用,200行的代码我可以写成2000+行。 ...
  • 其实我们不能单纯以每天敲的代码行数来衡量我么的编码能力(AI算法的1行可比CRUD代码的100行还要强太多了),而我们如果每天都能持续输出100行的优质代码,那么一年就是36500行代码,这个代码量已经是...
  • 代码行数:约XXXX行 (2)开发环境:Eclipse,字符编码GBK(默认) 3.程序已经实现功能清单: 列表你已经实现的功能清单,推荐给出屏幕截图,底下再给出简要文字说明。 4.程序算法说明及面向对象实现技术方案 ...
  • 学期总结

    2017-12-21 09:01:00
     通过这一学期的学习,我学会了如何进行Java程序代码的编写,可以编写简单的程序,例如简单的加减法运算等,学习了Java的历史,学习了类、属性、文件和静态方法,复习了六种运算符合循环语句,又更深入的学习了数组...
  •  如何用新的存储能力超越正常的行数限制  查询优化器是如何运行的  为有问题的查询计划排除故障的多种技术  何时强制sql server重用或创建新的缓存查询计划  运行dbcc时,sqlserver在内部检查什么  处理多个...
  • 2.统计本学期编写的代码行数(请使用折线图) 3.描述自己在结对编程中的主要作用及收获。 作用:打代码,带领队伍走向胜利,走向及格; 收获:跟队友产生了爱恨情仇还有适当的默契,知道了如何与队友配合,也...
  •  在程序中优化查询而无需改动代码。  作为Oracle SQL经典著作之一,本书为SQL开发人员指明了前行的方向,赋予了他们不断开拓的动力。 作者简介  KAREN MORTON 研究人员、教育家及顾问,Fidelity信息服务公司...
  •  如何用新的存储能力超越正常的行数限制  查询优化器是如何运行的  为有问题的查询计划排除故障的多种技术  何时强制sql server重用或创建新的缓存查询计划  运行dbcc时,sqlserver在内部检查什么  处理多个...
  • C#编程经验技巧宝典

    热门讨论 2008-06-01 08:59:33
    2 <br>0003 设置程序代码行序号 3 <br>0004 开发环境全屏显示 3 <br>0005 设置窗口的自动隐藏功能 3 <br>0006 根据需要创建所需解决方案 4 <br>0007 如何使用“验证的目标架构”功能 4 ...
  • 数据结构课设

    2013-01-03 02:51:25
    根据实际情况进行详细的程序代码检查。 时间安排: 1 上机时间安排 2课程设计检查时间 3 课程设计报告上交时间 课程设计报告要求: 1.课程设计报告封面:包括课题名称、班级、学号、学生姓名、成绩和指导教师; 2....
  • 除此之外, 还可以在程序中用代码维护词库, 方法如下: // 单个操作 // 添加一个自定义词 DictionaryFactory.getDictionary().add("杨尚川"); // 删除一个自定义词 DictionaryFactory.getDictionary().remove("刘诗诗...
  • 多进程多线程综合实战读取CSV写入csv单线程统计行数多线程统计行数多进程统计行数多线程检索数据第一步多线程检索赵琳多线程检索找到通知其他人退出多线程检索开放数据并保存同一个文件作业day24up ...
  • delphi 开发经验技巧宝典源码

    热门讨论 2010-08-12 16:47:23
    0170 如何统计两个子字符串之间的字符的个数 111 0171 判断字符在字符串中出现的个数 111 0172 在语句中查找汉字的个数 112 0173 如何统计中英文个数 112 5.5 字符串的其他操作 113 0174 返回指定字符串...
  • 实例063 得到TMemo中的可见行数 75 2.4 TListBox控件应用典型实例 76 实例064 在TListBox组件间交换数据 76 实例065 为TListBox添加水平滚动条 77 实例066 将数据库数据添加到组合框中 78 实例067 借助...
  • 将SQL代码插入到应用程序的输入参数中,之后,SQL代码被传递到数据库执行。从而达到对应用程序的攻击目的。 注入原理 常见攻击方法 检测是否可以注入【检测注入点】 示例:...
  • % 利用附件中的程序即可对自己的代码进行测试. % % 如果后面的帖子里有人贴出了自己的控制程序,你也可以下载来进行测试,研究. % 如果你有好的控制代码,也在跟贴里通过附件的形式发布出来,供大家学习分享. % ...
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用C语言进行程序设计已成为软件开发的一个主流。用C语言来编写目标系统软件,会大大缩短开发周期,且...
  • 本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为核心,介绍了应用Visual Basic进行程序开发的多方面的知识和技巧,主要包括Visual Basic的多媒体开发、数据库应用、网络技术与Web开发、安全...

空空如也

空空如也

1 2 3
收藏数 44
精华内容 17
关键字:

如何统计程序代码行数