`
liuxi1024
  • 浏览: 390255 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

获取project里java代码行数

阅读更多

1、class

public class FileReadTest {

	static int codeLines = 0;

	static int whiteLines = 0;

	static int commentLines = 0;

	static int tatolLines = 0;

	static boolean bComment = false;

	public static void main(String[] args) {
		StringBuffer pathName = new StringBuffer("D:\\WorkSpace\\demo\\src\\org\\user\\logic");
		
		ComputeDirectoryAndFiles(pathName, 0);
		
		//ComputeNetFiles(pathName);
		System.out.println("Code Lines : " + (codeLines = tatolLines - commentLines - whiteLines));
		System.out.println("White Lines : " + whiteLines);
		System.out.println("Comment Lines : " + commentLines);

	}

	public static void ComputeDirectoryAndFiles(StringBuffer pathName, int level) {
		
		File directory = new File(pathName.toString());
		File[] files = directory.listFiles();
		String prefix = "";
		for (int i = 0; i < level; i++) {
			prefix += "** ";
		}
		if (directory.isDirectory()) {
			for (int i = 0; i < files.length; i++) {
				if (files[i].isFile() && files[i].getName().matches("^[a-zA-Z[^0-9]]\\w*.java$")) {

					computeLines(files[i]);
				}
				if (files[i].isDirectory()) {

					pathName.append("/" + files[i].getName());
					level++;
					ComputeDirectoryAndFiles(pathName, level);
					int start = pathName.toString().length() - files[i].getName().length() - 1;
					int end = pathName.toString().length();
					pathName.delete(start, end);

					level--;
				}
			}
		}
	}
	
	public static void ComputeNetFiles(StringBuffer netPath){
		try {
			File netDir = new File(netPath.toString());
			
			File[] files = netDir.listFiles();
			
			for(int i=0;i<files.length;i++){
				System.out.println(":"+files[i].getName());
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	

	public static void computeLines(File file) {
		BufferedReader bf = null;

		try {
			bf = new BufferedReader(new FileReader(file));
			String lineStr = "";
			while ((lineStr = bf.readLine()) != null) {
				// 总行数
				tatolLines++;
				// 计算空行
				whiteLines(lineStr);
				// 统计代码行数
				commendLines(lineStr);
				// 计算代码的行数
				// codeLines(lineStr);
			}
		} catch (FileNotFoundException e) {
			System.out.println("文件没有找到");
		} catch (IOException ee) {
			System.out.println("输入输出异常 ");
		} finally {
			if (bf != null) {
				try {
					bf.close();
					bf = null;
				} catch (Exception e) {
					System.out.println("关闭BufferReader时出错");
				}
			}
		}
	}

	public static void whiteLines(String lineStr) {
		if (lineStr.matches("^[\\s&&[^\\n]]*$")) {
			whiteLines++;
		}

	}

	public static void commendLines(String lineStr) {

		// 判断是否是一个注释行
		// 这里是单行注释的如 /*..... */或/**.... */
		if (lineStr.matches("\\s*/\\*{1,}.*(\\*/).*")) {

			commentLines++;
		}
		/**
		 * 这里是多行注释的
		 */
		// 这里的是当开始为/**或/*但是没有 */ 关闭时
		else if (lineStr.matches("\\s*/\\*{1,}.*[^\\*/].*")) {

			commentLines++;
			bComment = true;
		} else if (true == bComment) {

			commentLines++;
			if (lineStr.matches("\\s*[\\*/]+\\s*")) {
				bComment = false;
			}
		} else if (lineStr.matches("^[\\s]*//.*")) {

			commentLines++;
		}

	}
}
 
分享到:
评论

相关推荐

    java实现的svn统计修改代码行数完整源码

    Java实现的SVN统计修改代码行数的源码解析 在软件开发过程中,代码行数(LOC,Lines of Code)经常被用作评估项目规模、工作量和复杂度的一个指标。对于版本控制系统如Subversion(SVN),了解每次提交中修改的代码...

    java实现svn统计代码修改行数的完整源码

    "统计代码行数"则涉及到代码分析,这是一种衡量软件规模和复杂性的方式,有助于理解代码的改动对项目的影响。 【文件列表解析】 `.classpath`和`.project`是Eclipse IDE的配置文件,它们包含关于项目的构建路径和...

    统计代码行数工具.zip

    因此,统计Java代码行数时需要考虑空行、注释以及嵌套结构。 3. **工具选择**:常见的代码行数统计工具有CLOC(Count Lines of Code)、SLOCCount、NCSS(Non-Commented Source Statements)等。这些工具不仅计算...

    代码行数统计源码使用教程

    在编程和软件开发中,了解项目中的代码行数是一个重要的度量标准,它可以帮助我们评估项目的规模、复杂性以及维护成本。本教程将详细介绍如何使用名为"CountLines.exe"的工具来统计源代码的行数。 一、代码行数统计...

    linecount代码统计工具

    例如,如果你有一个名为"my_project"的目录,你可以运行"linecount my_project"来获取该目录下所有代码的统计信息。工具通常会返回总代码行、空行、注释行等关键数据。 值得注意的是,虽然代码行数是一个直观的度量...

    计算代码行数

    为了计算一个文件或整个项目中的代码行数,我们可以编写一个简单的Java程序来遍历目录结构,识别源代码文件,并统计其中的行数。 在Java中,我们可以使用`java.io.File`类来处理文件和目录。通过`listFiles()`方法...

    java工具类之实现java获取文件行数

    在Java编程中,有时我们需要统计一个项目中的源代码文件的各种指标,例如文件的总行数、代码行数、注释行数以及空行数。这个任务可以通过创建一个工具类来实现,具体步骤如下: 首先,定义一个名为`JavaCode`的类,...

    (统计代码量)projectCodeInfo_plugins.rar

    总的来说,"projectCodeInfo_plugins.rar"提供的工具简化了Java项目的代码量统计过程,使得开发者无需手动计数,就能快速获取项目的量化指标。通过与Eclipse的无缝集成,开发团队可以更有效地管理和优化他们的代码库...

    JAVA学习方法与数组

    - **编写代码**:在Eclipse中编写Java代码时需遵循以下规则: - 每个Java类必须位于一个包内。 - 代码示例: ```java package xu.cs.demo; public class Hello { public static void main(String[] args) { ...

    PyPI 官网下载 | pygount-0.6-py3-none-any.whl

    pygount是一款Python编写的源代码统计工具,它能够帮助开发者统计项目中不同语言的代码行数,包括注释和空行。这对于代码审计、项目维护、度量软件复杂性等工作非常有用。pygount支持多种编程语言,包括但不限于...

    JacocoAnt.rar

    - **行覆盖率**:已执行的代码行数占总代码行数的比例。 - **分支覆盖率**:已执行的条件分支数占总条件分支数的比例。 - **方法覆盖率**:已执行的方法数占总方法数的比例。 - **类覆盖率**:已执行的类数占总类数...

    CodeUtils:代码辅助工具,提供各种自动生成代码的方法

    CodeUtils 代码工具,一键自动生成完整代码。 JavaProject ,属于编译时(ButterKnife等框架属于运行时)工具。 原理是根据功能需要生成代码文本,然后利用FileIO流写入到文件中。...获取项目代码行数(统计全部.xml和.java

    JAVA基础笔记

    - **Project**:项目,在Eclipse中指的是一组相关的源代码文件集合,通常包含源代码、资源文件、构建设置等。 - **Folder**:文件夹,用于组织和管理文件与项目。 - **Import**:导入功能,允许用户将已存在的代码...

    checkstyle插件使用文档

    JXR 插件用于生成 Java 源代码的交叉引用,这样在 Checkstyle 报告中点击问题行数时,可以直接跳转到源代码。同样在 `&lt;reporting&gt;` 部分添加 JXR 插件配置。 ```xml &lt;groupId&gt;org.apache.maven.plugins ...

    eclipse jdbc

    Eclipse JDBC 连接 MySQL 指南 Eclipse 是一个流行的集成开发环境(IDE),它支持多种编程语言,包括 Java。JDBC(Java Database Connectivity)是 Java ...这些参数可以根据需要进行配置,以便获得更好的连接体验。

    JDBC_Project_B18

    【JDBC_Project_B18】是一个关于Java数据库连接(JDBC)的项目,适用于批次18的学习者。这个项目旨在帮助开发者深入理解如何使用Java语言与各种关系型数据库进行交互,包括数据的增删改查操作。JDBC是Java平台的标准...

    maven window下安装包

    第12章:编写自定义插件/12.3 编写插件实例:统计代码行数/12.3.2 实现AbstractMojo类 第12章:编写自定义插件/12.3 编写插件实例:统计代码行数/12.3.3 实例完整源代码 第12章:编写自定义插件/12.3 编写插件实例:...

    editplus 代码编辑器html c++ jsp css

    【14】工具集成——编译器集成例子(Java、Borland C++、Visual C++、Inno Setup、nsis、C#) 【15】工具集成——让Editplus调试PHP程序———————-avenger,aukw 【16】工具集成——打造 PHP 调试环境(二)——...

Global site tag (gtag.js) - Google Analytics