规则:以";","{","}"结束的行为有效行;
1.接收一个文件或目录;
2.读单个文件或目录下的多个文件;
3.排除package行;
4.排除import行;
5.排除空白行;
6.排除单行注释;
7.排除文档注释;
8.去掉无效";";
9.去掉块注释;
源码如下:
package com.zzxsl.io; import java.io.*; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by Grover on 05/06/2016. */ public final class Statistics { /** * 数量 */ private int count; public Statistics(String filePath) { File file = new File(filePath); if (!file.exists()){ //判断是否存在 return; } if (file.isFile()){ //判断是否为文件 readFile(file); return; } //目录 findFile(file); } /** * 在目录中找.java文件 * @param dir */ private void findFile(File dir) { for (File file : dir.listFiles()) { if(file.isDirectory()){ findFile(file); continue; } readFile(file); } } /** * 读文件 * @param file */ private void readFile(File file) { if(!file.getName().endsWith(".java")){ return; } try { BufferedReader fileReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8")); String line; StringBuilder content = new StringBuilder(); while ((line = fileReader.readLine()) != null){ line = exclusionInvalidSemicolon(line.trim()); if(line.startsWith("package") || line.startsWith("import") || line.equals("") //空行 || line.startsWith("//")){ //单行注释 continue; } content.append(line); } exclusionCommentAndCalculate(content.toString()); } catch (UnsupportedEncodingException e) { System.err.println("不支持用指定编码解析!"); e.printStackTrace(); } catch (FileNotFoundException e) { System.err.println("文件路径不存在!"); e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 去掉文档注释和块注释,并计算";"数量 * @param content * @return */ private void exclusionCommentAndCalculate(String content) { calculateSemicolonCount(content.replaceAll("/\\*.*?\\*/","")); } /** * 计算";"数量; * @param text */ private void calculateSemicolonCount(String text) { Matcher matcher = Pattern.compile("[;\\{\\}]").matcher(text); while (matcher.find()){ count += 1; } } /** * 去掉无效的分号 * @param text * @return */ private String exclusionInvalidSemicolon(String text) { return text.replaceAll("^;*","").replaceAll(";.*//.*",";"); } public int getCount() { return count; } }
相关推荐
在这个场景中,我们关注的是一个名为"java代码统计工具"的应用,它专门用于统计.java文件中的代码行数和注释行数。这个工具包含了三个关键文件:`java代码统计工具.exe`是可执行程序,用户可以直接运行来执行统计;`...
该任务成功构建了一个用于统计.java文件中重复字符串的demo程序。经过全面的测试验证,该代码能够稳定并有效地运行,达到了预期的功能目标。在这个demo中,主要逻辑涉及到了对.java文件内容的读取与处理。首先,程序...
Java代码行数统计工具不仅计数源代码的行数,还可能区分注释、空行和实际执行的代码行。这对于理解代码的可读性和可维护性至关重要。 统计工具的工作原理可能包括以下步骤: 1. 读取Java源代码文件(.java扩展名)...
一个统计代码行的maven插件(会统计配置的后缀类型,统计代码行数,并统计.java文件的 代码行数 注释行数 空白行数 .. 输出结果如) [INFO] \src\main\java总行数 : 6511 lines of code in 63 files [INFO] \src\test\...
本话题主要关注如何统计Java项目中的有效代码量、注解量和空行数。我们将通过编写一个Java程序来实现这一功能,并以`CodeCount.java`作为我们的核心工具文件,而`a.java`和`b.java`则是我们用于测试的Java源代码文件...
2. 行数计算:逐行读取文件内容,通过换行符('\n')计数,排除空行和注释行,得出有效代码行数。 3. 结果汇总:统计每个文件的行数,并将结果整合到报告中,包括文件名、总行数、有效行数等信息。 4. 输出展示:...
Java是一种跨平台的面向对象语言,其代码行统计涉及.java文件。与C#类似,可以使用JDepend或SonarQube等工具进行统计,它们不仅能计算代码行,还能分析设计质量、代码复杂性和潜在问题。 代码行统计的价值不仅在于...
CodeCounter_代码统计,可直接运行的main文件,灵活统计指写目录下的java文件中的代码行数。
3.实现文本类文件(.txt, .java, .ini, .bat, )的预览功能(比如实现对前100行文本在某个小窗口中进行预览)。4.实现文件的重命名功能。5.实现对某个文件夹进行统计功能(如统计文件夹中文件数目)。
代码行统计工具用Java语言实现,可以对C\C++、Java的源代码进行统计,统计结果包括:总行数、空行数、注释行数和代码行数,统计结果可以以表格的形式显示给用户或另存为文件。 一 执行环境: 操作系统:WindowsNT/...
《代码行统计工具Java源码解析》 在软件开发中,代码行数(Lines of Code,简称LOC)常被用作衡量项目规模和工作量的一个参考指标。代码行统计工具可以帮助开发者快速了解项目的整体结构,便于管理和优化。本文将...
例如,输入`cloc --by-file --include-lang=Java .`,其中`.`代表当前目录,`--include-lang=Java`确保只统计Java文件。CLOC会返回一个详细的报告,包括每种类型(如代码、注释、空行)的行数。 3. **PMD和...
下面是一个简化的Java代码片段,展示了如何处理Java源文件的代码行统计: ```java import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; public class ...
用户可以选择指定的目录,工具会递归地扫描该目录及其所有子目录内的.java文件进行统计。这种功能对于大型项目尤其有用,因为它可以快速处理整个源代码树,而无需手动筛选或分批统计。 4. **注释率**: 注释率是...
1. **行数统计**:计算整个项目或特定类的代码行数,包括空行、注释行和有效代码行。 2. **文件统计**:列出所有Java源文件及其对应的代码行数。 3. **类和方法统计**:统计项目中的类数量、接口数量以及每个类的...
总结一下,这个Java程序通过遍历目录、读取文件内容、分割行并过滤注释,实现了统计指定目录下所有Java源文件的代码行数。这在软件度量和项目管理中是一个实用的工具,可以帮助我们了解代码库的规模和结构。
1. **代码行数统计**:插件可以计算源代码中的总行数,包括空行、注释行和实际的代码行。这对于理解项目规模和复杂性非常有帮助。 2. **语言区分**:由于同时支持Java和PHP,插件能够分别统计两种语言的代码行数,...
10、支持Java文件 .java 的统计。 11、支持SQL文件 .sql 的统计。 12、支持 *.* 文件类型的自动分析统计。 13、支持文件目录的选择统计方式。 14、支持用户自定义文件统计类型及统计方法。 15、支持Htm,Excel,Csv,...
Java工程代码行计算器是一款实用工具,它专门设计用于统计Java项目的源代码数量,提供有关总代码行、空白行和实际代码行的详细信息。在软件开发过程中,代码行计数可以作为评估项目规模、复杂性以及工作量的一种方法...