精华内容
下载资源
问答
  • 比如想统计一个Java程序员一天写代码的工作(如:有效代码多少行、空行多少注释多少行等),这个小工具也许能做为一个参考的依据。  思路:因为每个java源文件的内容基本包括java语句、空白行、注释三部份组成...

           比如想统计一个Java程序员一天写代码的工作量(如:有效代码多少行、空行多少、注释多少行等),这个小工具也许能做为一个参考的依据。

        思路:因为每个java源文件的内容基本包括java语句、空白行、注释三部份组成(不包括注解),所以要统计某个文件这三部份的内容各占多少时,只需写三个匹配这几部份内容的正则表达式即可。然后通过IO流读取文件中的每一行,并根据正则匹配的结果,累加每部份匹配的数量即可。

        注释行:单行注释(//)、多行注释、文档注释。正则:((//)|(/\\*+)|((^\\s)*\\*)|((^\\s)*\\*+/))+

        空白行:一行内只有空格、\t、\n等非可视字符表示空白行。正则:^\\s*$

        代码行:以分号“;“结束为一行有效的代码。正则:(?!import|package).+;\\s*(((//)|(/\\*+)).*)*

        实现方式:

            1、用户在控制台输入要统计的java文件路径或目录

            2、根据路径创建一个File对象,判断文件是否有效,并给出提示。最后将文件和IO流绑定

            3、循环读取文件中的某一行,并根据正则匹配的结果累记每部份匹配的数量


    完整代码如下:
    package regex;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileFilter;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Scanner;
    import java.util.regex.Pattern;
    
    /**
     * 代码统计工具
     * 统计某个java源文件或某个目录中所有java源文件中注释、空白行、代码行各占多少行
     * 注释:包括单行注释(//)、多行注释、文档注释
     * 空白行:一行内没有任何内容的表示空白行
     * 代码行:以分号“;”结束的一条语句,可以统计为一行有效代码
     */
    public class CodeStatDemo {
    	
    	// 记录注释行数
    	static long annotationLine = 0;
    	
    	// 记录空白行数
    	static long blankLine = 0;
    	
    	// 记录有效代码的行数
    	static long codeLine = 0;
    	
    	// 代码总行数
    	static long totalLine = 0;
    	
    	// 文件总数
    	static long fileCount = 0;
    
    	public static void main(String[] args) throws FileNotFoundException  {
    		System.out.println("请输入要统计代码量的java文件或java目录:");
    		Scanner in = new Scanner(System.in);
    		String filePath = in.nextLine();
    		
    		File file = new File(filePath);
    		// 根据用户输入的文件名和目录执行代码量统计
    		codeStat(file);
    		
    		System.out.println("----------统计结果---------");
    		System.out.println("文件数量:" + fileCount + "个");
    		System.out.println(file + "文件/目录总行数:" + totalLine);
    		System.out.println("代码行数:" + codeLine);
    		System.out.println("注释行数:" + annotationLine);
    		System.out.println("空白行数:" + blankLine);
    		long otherLine = totalLine - (codeLine + annotationLine + blankLine);
    		System.out.println("其它行数:" + otherLine);
    		
    	}
    
    	private static void codeStat(File file) throws FileNotFoundException {
    		if (file == null || !file.exists()) 
    			throw new FileNotFoundException(file + ",文件不存在!");
    		
    		fileCount ++;	// 文件数累加
    		
    		if (file.isDirectory()) {
    			File[] files = file.listFiles(new FileFilter() {
    				
    				@Override
    				public boolean accept(File pathname) {
    					return pathname.getName().endsWith(".java") || pathname.isDirectory();
    				}
    			});
    			
    			for (File target : files) {
    				codeStat(target);
    			}
    		} else {
    			BufferedReader bufr = null;
    			try {
    				// 将指定路径的文件与字符流绑定
    				bufr = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
    			} catch (FileNotFoundException e) {
    				throw new FileNotFoundException(file + ",文件不存在!" + e);
    			}
    			
    			// 定义匹配每一行的正则匹配器
    			Pattern annotationLinePattern = Pattern.compile("((//)|(/\\*+)|((^\\s)*\\*)|((^\\s)*\\*+/))+", 
    					Pattern.MULTILINE + Pattern.DOTALL);	// 注释匹配器(匹配单行、多行、文档注释)
    			
    			Pattern blankLinePattern = Pattern.compile("^\\s*$");	// 空白行匹配器(匹配回车、tab键、空格)
    			
    			Pattern codeLinePattern = Pattern.compile("(?!import|package).+;\\s*(((//)|(/\\*+)).*)*",
    					Pattern.MULTILINE + Pattern.DOTALL); // 代码行匹配器(以分号结束为一行有效语句,但不包括import和package语句)
    			
    			// 遍历文件中的每一行,并根据正则匹配的结果记录每一行匹配的结果
    			String line = null;
    			try {
    				while((line = bufr.readLine()) != null) {
    					if (annotationLinePattern.matcher(line).find()) {
    						annotationLine ++;
    					}
    					
    					if (blankLinePattern.matcher(line).find()) {
    						blankLine ++;
    					}
    					
    					if (codeLinePattern.matcher(line).matches()) {
    						codeLine ++;
    					} 
    					
    					totalLine ++;
    				}
    				
    			} catch (IOException e) {
    				throw new RuntimeException("读取文件失败!" + e);
    			} finally {
    				try {
    					bufr.close();	// 关闭文件输入流并释放系统资源
    				} catch (IOException e) {
    					throw new RuntimeException("关闭文件输入流失败!");
    				}
    			}
    		}
    	}
    }
    测试结果:


    展开全文
  • 单个方法应保持多少代码量

    千次阅读 2018-08-29 13:24:52
    从方法开始,到括号结束,这之间的行数不要超过80行(包括注释,空行,大括号等),如果方法中的逻辑代码非常多,那么分枝干,将枝干逻辑抽取为方法,是主干代码更加清晰,既有利于阅读且利于维护。 单行字符数量:...

    总行数:
    从方法开始,到括号结束,这之间的行数不要超过80行(包括注释,空行,大括号等),如果方法中的逻辑代码非常多,那么分枝干,将枝干逻辑抽取为方法,是主干代码更加清晰,既有利于阅读且利于维护。
    单行字符数量:
    单行字符不超过120个,超出需要换行。
    1. 方法调用多个参数需要换行从逗号后开始,
    2. 方法调用换行从点符号开始,
    3. 括号前不换行,
    4. 运算符与下文一起换行。
    以Visual Studio为例默认字体设置下,这样的规格对于平时开发阅读和以后维护阅读都是轻松且清晰的。

    展开全文
  • 硬盘采用DMA方式进行数据传送,其数据传输率为4MB/s, 每次DMA传输的数据为8KB, 要求没有任何数据传输被错过。如果CPU在DMA初始化设置和启动硬盘操作等方面用了1000个时钟周期,并且在DMA传送完成后的中断处理需要...

    案例分析一:假定CPU的主频是500MHz。硬盘采用DMA方式进行数据传送,其数据传输率为4MB/s, 每次DMA传输的数据量为8KB, 要求没有任何数据传输被错过。

    如果CPU在DMA初始化设置和启动硬盘操作等方面用了1000个时钟周期,并且在DMA传送完成后的中断处理需要500个时钟,则在硬盘100%处于工作状态的情况下, CPU用于硬盘I/O操作的时间百分比大约是多少?

    案例分析二:

    请求分页管理系统中,假设某进程的页表内容如下表所示。页号页框(Page Frame)号有效位(存在位)

    0—0

    1906H1

    2—0

    3235H1

    4—0

    页面大小为4KB,一次内存的访问时间是200ns,一次快表(TLB)的访问时间是2ns,处理一次缺页的平均时间为107ns(已含更新TLB和页表的时间),进程的驻留集大小固定为2,采用最近最少使用置换算法(LRU)和局部淘汰策略。

    假设①TLB初始为空;②地址转换时先访问TLB,若TLB未命中,再访问页表(忽略访问页表之后的TLB更新时间);③有效位为0表示页面不在内存,产生缺页中断,缺页中断处理后,返回到产生缺页中断的指令处重新执行。设有虚地址访问序列31A2H、24C2H、36B4H,

    请问:

    (1) 依次访问上述三个虚地址,各需多少时间?给出计算过程。

    (2)基于上述访问序列,虚地址24C2H的物理地址是多少?请说明理由。

    展开全文
  • 比如想统计一个Java程序员一天写代码的工作(如:有效代码多少行、空行多少注释多少行等),这个小工具也许能做为一个参考的依据。 思路:因为每个java源文件的内容基本包括java语句、空白行、注释三部份组成...

           比如想统计一个Java程序员一天写代码的工作量(如:有效代码多少行、空行多少、注释多少行等),这个小工具也许能做为一个参考的依据。

        思路:因为每个java源文件的内容基本包括java语句、空白行、注释三部份组成(不包括注解),所以要统计某个文件这三部份的内容各占多少时,只需写三个匹配这几部份内容的正则表达式即可。然后通过IO流读取文件中的每一行,并根据正则匹配的结果,累加每部份匹配的数量即可。

        注释行:单行注释(//)、多行注释、文档注释。正则:((//)|(/\\*+)|((^\\s)*\\*)|((^\\s)*\\*+/))+

        空白行:一行内只有空格、\t、\n等非可视字符表示空白行。正则:^\\s*$

        代码行:以分号“;“结束为一行有效的代码。正则:(?!import|package).+;\\s*(((//)|(/\\*+)).*)*

        实现方式:

            1、用户在控制台输入要统计的java文件路径或目录

            2、根据路径创建一个File对象,判断文件是否有效,并给出提示。最后将文件和IO流绑定

            3、循环读取文件中的某一行,并根据正则匹配的结果累记每部份匹配的数量


    完整代码如下:
    package regex;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileFilter;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Scanner;
    import java.util.regex.Pattern;
    
    /**
     * 代码统计工具
     * 统计某个java源文件或某个目录中所有java源文件中注释、空白行、代码行各占多少行
     * 注释:包括单行注释(//)、多行注释、文档注释
     * 空白行:一行内没有任何内容的表示空白行
     * 代码行:以分号“;”结束的一条语句,可以统计为一行有效代码
     */
    public class CodeStatDemo {
    	
    	// 记录注释行数
    	static long annotationLine = 0;
    	
    	// 记录空白行数
    	static long blankLine = 0;
    	
    	// 记录有效代码的行数
    	static long codeLine = 0;
    	
    	// 代码总行数
    	static long totalLine = 0;
    	
    	// 文件总数
    	static long fileCount = 0;
    
    	public static void main(String[] args) throws FileNotFoundException  {
    		System.out.println("请输入要统计代码量的java文件或java目录:");
    		Scanner in = new Scanner(System.in);
    		String filePath = in.nextLine();
    		
    		File file = new File(filePath);
    		// 根据用户输入的文件名和目录执行代码量统计
    		codeStat(file);
    		
    		System.out.println("----------统计结果---------");
    		System.out.println("文件数量:" + fileCount + "个");
    		System.out.println(file + "文件/目录总行数:" + totalLine);
    		System.out.println("代码行数:" + codeLine);
    		System.out.println("注释行数:" + annotationLine);
    		System.out.println("空白行数:" + blankLine);
    		long otherLine = totalLine - (codeLine + annotationLine + blankLine);
    		System.out.println("其它行数:" + otherLine);
    		
    	}
    
    	private static void codeStat(File file) throws FileNotFoundException {
    		if (file == null || !file.exists()) 
    			throw new FileNotFoundException(file + ",文件不存在!");
    		
    		fileCount ++;	// 文件数累加
    		
    		if (file.isDirectory()) {
    			File[] files = file.listFiles(new FileFilter() {
    				
    				@Override
    				public boolean accept(File pathname) {
    					return pathname.getName().endsWith(".java") || pathname.isDirectory();
    				}
    			});
    			
    			for (File target : files) {
    				codeStat(target);
    			}
    		} else {
    			BufferedReader bufr = null;
    			try {
    				// 将指定路径的文件与字符流绑定
    				bufr = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
    			} catch (FileNotFoundException e) {
    				throw new FileNotFoundException(file + ",文件不存在!" + e);
    			}
    			
    			// 定义匹配每一行的正则匹配器
    			Pattern annotationLinePattern = Pattern.compile("((//)|(/\\*+)|((^\\s)*\\*)|((^\\s)*\\*+/))+", 
    					Pattern.MULTILINE + Pattern.DOTALL);	// 注释匹配器(匹配单行、多行、文档注释)
    			
    			Pattern blankLinePattern = Pattern.compile("^\\s*$");	// 空白行匹配器(匹配回车、tab键、空格)
    			
    			Pattern codeLinePattern = Pattern.compile("(?!import|package).+;\\s*(((//)|(/\\*+)).*)*",
    					Pattern.MULTILINE + Pattern.DOTALL); // 代码行匹配器(以分号结束为一行有效语句,但不包括import和package语句)
    			
    			// 遍历文件中的每一行,并根据正则匹配的结果记录每一行匹配的结果
    			String line = null;
    			try {
    				while((line = bufr.readLine()) != null) {
    					if (annotationLinePattern.matcher(line).find()) {
    						annotationLine ++;
    					}
    					
    					if (blankLinePattern.matcher(line).find()) {
    						blankLine ++;
    					}
    					
    					if (codeLinePattern.matcher(line).matches()) {
    						codeLine ++;
    					} 
    					
    					totalLine ++;
    				}
    				
    			} catch (IOException e) {
    				throw new RuntimeException("读取文件失败!" + e);
    			} finally {
    				try {
    					bufr.close();	// 关闭文件输入流并释放系统资源
    				} catch (IOException e) {
    					throw new RuntimeException("关闭文件输入流失败!");
    				}
    			}
    		}
    	}
    }
    测试结果:


    转载于:https://www.cnblogs.com/xyang0917/archive/2012/07/04/4172519.html

    展开全文
  • 建议编程时不要注释无用代码

    千次阅读 2015-10-10 09:22:49
    不然日子久了,往往代码中充斥着大量旧代码注释。造成额外的维护负担:谁都不记得这些注释的作用了,又不知道能否直接删除。即使知道这些代码的作用,要用的时候反注释后可能也是一堆编译错误,未必比重写好多少。 ...
  • 毕竟代码量不能说明任何问题……程序附源码,可以直接用javaw.exe %1 运行查看效果,也可以在MyEclipse中查看源码 修改内容:1 忽略注释行,如/* // /** @ *开头的行 2 忽略空行 3 修改了部分实现……
  • 代码量统计工具cloc

    2020-04-08 22:40:21
    要统计项目代码一共多少行,我们都知道一个项目中有许多文件,我们不可能将它们进行相加计算一共多少行。再说一个项目中也有空白行、注释行。经过查找发现一个实用的工具Cloc。 一、简介 Cloc是一款使用Perl语言开发...
  • 讨论程序员一天代码量

    千次阅读 2014-08-12 16:37:11
    讨论程序员一天代码量。 虽然可能有一些符号、注释等一些比较占行。 那么一名合格的程序员,一天代码量应该在多少行。
  • 鸡兔同笼,已知其总头数为H,总脚数为F,求笼中鸡兔各有多少只? 用键盘输入H和F 的数据,将结果以十六进制形显示在屏幕上。要求:判断H,F的数值是否合理,不合理重新输入,将结果以十六进制形式显示在屏幕上。(含十...
  • 游走于各大考研网站时,发现因为这些网站的盈利模式要求,他们的广告很大,浮动窗口到处乱飞,页面通常不够干净整洁,信息大但信息质量不高。考研资讯中也是广告掺杂多,真正有质量的文章少之又少。而我的考研...
  • 背包问题蛮力法求解 ...#include <iostream>...//一共有多少货物 int ans;//背包中现有几个货物 int maxWeight;//背包的总容量 int r[100];//记录最后的选择的货物标号 using namespace std; struct go
  • 我们有时候想要知道我们的项目中到底写了多少代码,这时候我们应该怎么办呢?我们只需要通过终端的几行指令即可. ...这样,终端就显示出我们的代码量,不过这里需要注意的是,注释也算在其中. ...
  • 今天突然想统计我的工程里面有多少代码量,于是写了这个小插件。     点击工程右键出现projectCodeInfo菜单,这里只统计工程级别,即只有在点击工程的目录才会出现这个菜单,点击工程里面某个包没出现这个菜单...
  • 这个问题,很多同事以及学生都问我这个问题。其实这是一个比较实际的问题,因为设计一个类成员函数的好与坏,决定了一个类代码的质量。...2. 代码量为1到15行。3. 好记的函数名称。4. 应该有注释
  • 输入:(grep -v "^$" 是去掉空行,注释也在代码量内)find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or -name "*.c" |xargs grep -v "^$"|wc -l 二、列出每个文件分别有多少行 打开终端,cd到...
  • 最大容量传感器 目标:自动检测有多少人进入和退出Trader Joe's,并使用Arduino根据设定的最大客户数量提醒客户何时进入或退出。 该代码是为具有两个超声波传感器... 您可以选择注释或取消注释代码以匹配所需的输出。
  • java代码统计小工具

    2009-12-22 09:03:53
    用它来统计你一天的工作,你写了多少行正常的代码多少行空行,多少注释行。用Java正则表达式实现的 你只需要把要统计的路径修改一下就可以了
  • SourceCounter是一个适用性广泛的代码统计工具,通过这个工具能够对30多种代码进行代码行数、注释、空行、文件大小等信息进行统计分析,另外软件还支持对软件...新版本较老版本有多少新增、修改、删除、有效代码量等。
  • 一般来说,高质量的代码需要15%以上的注释量,面对上千行的代码,如何知道自己的代码是否符合这个比例呢? CodeCounter正是为此而生,它能够对单个文件分析计数,也能够对整个工程计数,它将告诉你,完成了多少工作...
  • 还有另外的一种处理方法就是:在常量声明时就进行相应类型的定义,代码如下:ConstONEAsDouble=1->新建中Artifact的名称对应maven中名字将图像上传到图片框里,然后运行该项目管理器不知道备忘录中有多少状态,...
  • 自学Java一段时间了,现在把一些学过的知识或者是学习过程中遇到的问题和大家分享,代码我都做了很详细的注释,对新手很友好。才疏学浅,如果有不对的地方,欢迎指出,期待和大家一起交流。 笔记 稀疏数组: ...
  • Code Compl 代码大全

    2011-05-26 12:09:22
     8.7 确定在产品代码中该保留多少防范式代码  8.8 防范式编程时保持防范  其他资源  关键点  第9章 伪代码编程过程  9.1 创建类和子程序的步骤概述  创建一个类的步骤  创建子程序的步骤  9.2 伪代码  9.3...
  • 关于代码的一些问题

    2020-12-01 16:57:35
    多少来评定代码是否精简的做法是完全错误的。并不是说想办法精简自己的代码,想方设法地把代码变得更简洁是错误的。而是说,代码是否精简与行数/字符数是没有必然联系的。因为编译器其实根本不在乎这...
  • 近来在对一个3D图像识别模型做部署裁剪时发现,做了一些有效的裁剪后,模型启动后占用的内存虽然减少了两三百个M,但是再继续对网络做裁剪...启动有卡顿,同时看着内存一路不停飙升,把相关网络层的代码注释掉试试,...
  • github上传代码,整理一下本周的工作,为明天去机房演示做准备。稍稍改了一下程序用的插图。添加了部分注释。 明天的计划: 准备去原版机房进行最后一次的演示。然后打算明天把报告彻底完成。课设终于要结束了真的...
  • 代码行数一般是个统计意义...小软件一般在5000行以下的代码量(包括注释、空行等等) 中小软件一般在10000行左右 中型软件就要在50000行上下了 中大型软件一般在100000 -- 300000行 而大型软件就没有边了。 因
  • 代码语法错误分析工具pclint8.0

    热门讨论 2010-06-29 07:00:09
    编译这个文件,看下你的编译器给你多少警告,再运行下lint, 可以自己对比一下。 我的机器上,VC产生0 errors 0 warnings, 而lint程序产生了如下8条警告信息,有些还是很有用处的提示,这里就不一一分析了. test.cpp...
  • 2.1.2 C++注释 2.1.3 C++预处理器和iostream文件 2.1.4 头文件名 2.1.5 名称空间 2.1.6 使用cout进行C++输出 2.1.7 C++源代码的格式化 2.2 C++语句 2.2.1 声明语句和变量 2.2.2 赋值语句 2.2.3 cout的新...
  • 下面是代码 可其中出现了一个错误(做了标记),不知道怎么解决,可否有高手帮我看看,能不能稍作修改一下,做成正确的。 就是这句错了 myview = new BallView(this); package sen.tan; import ...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 184
精华内容 73
关键字:

代码注释量多少