
正文
java代码统计工具 java 统计
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Java 有什么好的代码行数,注释行数统计工具
package com.syl.demo.test;
import java.io.*;
/**
* java代码行数统计工具类
* Created by 孙义朗 on 2017/11/17 0017.
*/
public class CountCodeLineUtil {
private static int normalLines = 0; //有效程序行数
private static int whiteLines = 0; //空白行数
private static int commentLines = 0; //注释行数
public static void countCodeLine(File file) {
System.out.println("代码行数统计java代码统计工具:" + file.getAbsolutePath());
if (file.exists()) {
try {
scanFile(file);
} catch (IOException e) {
e.printStackTrace();
}
} else {
System.out.println("文件不存在java代码统计工具!");
System.exit(0);
}
System.out.println(file.getAbsolutePath() + " ,java文件统计java代码统计工具:" +
"总有效代码行数: " + normalLines +
" ,总空白行数:" + whiteLines +
" ,总注释行数:" + commentLines +
" ,总行数:" + (normalLines + whiteLines + commentLines));
}
private static void scanFile(File file) throws IOException {
if (file.isDirectory()) {
File[] files = file.listFiles();
for (int i = 0; i files.length; i++) {
scanFile(files[i]);
}
}
if (file.isFile()) {
if (file.getName().endsWith(".java")) {
count(file);
}
}
}
private static void count(File file) {
BufferedReader br = null;
// 判断此行是否为注释行
boolean comment = false;
int temp_whiteLines = 0;
int temp_commentLines = 0;
int temp_normalLines = 0;
try {
br = new BufferedReader(new FileReader(file));
String line = "";
while ((line = br.readLine()) != null) {
line = line.trim();
if (line.matches("^[//s[^//n]]*$")) {
// 空行
whiteLines++;
temp_whiteLines++;
} else if (line.startsWith("/*") !line.endsWith("*/")) {
// 判断此行为"/*"开头java代码统计工具的注释行
commentLines++;
comment = true;
} else if (comment == true !line.endsWith("*/")) {
// 为多行注释中的一行(不是开头和结尾)
commentLines++;
temp_commentLines++;
} else if (comment == true line.endsWith("*/")) {
// 为多行注释的结束行
commentLines++;
temp_commentLines++;
comment = false;
} else if (line.startsWith("//")) {
// 单行注释行
commentLines++;
temp_commentLines++;
} else {
// 正常代码行
normalLines++;
temp_normalLines++;
}
}
System.out.println(file.getName() +
" ,有效行数" + temp_normalLines +
" ,空白行数" + temp_whiteLines +
" ,注释行数" + temp_commentLines +
" ,总行数" + (temp_normalLines + temp_whiteLines + temp_commentLines));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
br = null;
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//测试
public static void main(String[] args) {
File file = new File("F:\\myweb");
countCodeLine(file);
}
}
相关问答
Q1: linux下有没有什么好的代码统计工具
1 sloccount源代码行数统计工具
--------------------------------------------------------------------------------
sloccount=Count Source Lines Of Code
官网 :
1.1 Ubuntu安装
--------------------------------------------------------------------------------
sudo apt-get install sloccount
1.2 使用
--------------------------------------------------------------------------------
sloccount [--version] [--cached] [--append] [ --datadir directory ]
[--follow] [--duplicates] [--crossdups] [--autogen] [--multiproject]
[--filecount] [--wide] [--details] [ --effort F E ] [ --schedule F E ] [
--personcost cost ] [ --overhead overhead ] [ --addlang language ] [
--addlangall ] [--] directories
--cached
跳过计算过程,直接使用上次结果
参数
描述
–multiproject
如果该文件夹包括一系列的子文件夹,而它们中的每一个都是相对独立开发的不同的项目,那么使用”–multiproject”选项,评估将会正确的考虑到这一点
–filecount
显示文件数目而非代码行数
–details
显示每个源文件的详细信息
–duplicates
算上所有重复的(默认情况下如果文件有相同的内容,则只算一个)
–crossdups
如果顶目录包含几个不同的项目,并且你想把不同的项目下重复的文件在每个项目中都算上一次,则使用该选项
1.3 转换成html文件
--------------------------------------------------------------------------------
有一个sloc2html.py可以把生成的结果转换为带图形统计结果的html文件. 缺点是对中文支持不好
例如:
sloccount --wide --multiproject SourceDirectory result.txt
sloc2html.py result.txt result.html
再打开result.html即可看到结果形如:
下载地址
输出样例
wget -O sloc2html.py
sloc2html.py文件源代码如下
#!/usr/bin/env python
# Written by Rasmus Toftdahl Olesen rto@pohldata.dk
# Modified slightly by David A. Wheeler
# Released under the GNU General Public License v. 2 or higher
from string import *
import sys
NAME = "sloc2html"
VERSION = "0.0.2"
if len(sys.argv) != 2:
print "Usage:"
print "\t" + sys.argv[0] + " sloc output file"
print "\nThe output of sloccount should be with --wide and --multiproject formatting"
sys.exit()
colors = { "python" : "blue",
"ansic" : "yellow",
"perl" : "purple",
"cpp" : "green",
"sh" : "red",
"yacc" : "brown",
"lex" : "silver"
# Feel free to make more specific colors.
"ruby" : "maroon",
"cs" : "gray",
"java" : "navy",
"ada" : "olive",
"lisp" : "fuchsia",
"objc" : "purple",
"fortran" : "purple",
"cobol" : "purple",
"pascal" : "purple",
"asm" : "purple",
"csh" : "purple",
"tcl" : "purple",
"exp" : "purple",
"awk" : "purple",
"sed" : "purple",
"makefile" : "purple",
"sql" : "purple",
"php" : "purple",
"modula3" : "purple",
"ml" : "purple",
"haskell" : "purple"
}
print "html"
print "head"
print "titleCounted Source Lines of Code (SLOC)/title"
print "/head"
print "body"
print "h1Counted Source Lines of Code/h1"
file = open ( sys.argv[1], "r" )
print "h2Projects/h2"
line = ""
while line != "SLOC\tDirectory\tSLOC-by-Language (Sorted)\n":
line = file.readline()
print "table"
print "trthLines/ththProject/ththLanguage distribution/th/tr"
line = file.readline()
while line != "\n":
num, project, langs = split ( line )
print "trtd" + num + "/tdtd" + project + "/tdtd"
print "table width=\"500\"tr"
for lang in split ( langs, "," ):
l, n = split ( lang, "=" )
print "td bgcolor=\"" + colors[l] + "\" width=\"" + str( float(n) / float(num) * 500 ) + "\"" + l + "=" + n + " (" + str(int(float(n) / float(num) * 100)) + "%)/td"
print "/tr/table"
print "/td/tr"
line = file.readline()
print "/table"
print "h2Languages/h2"
while line != "Totals grouped by language (dominant language first):\n":
line = file.readline()
print "table"
print "trthLanguage/ththLines/th/tr"
line = file.readline()
while line != "\n":
lang, lines, per = split ( line )
lang = lang[:-1]
print "trtd bgcolor=\"" + colors[lang] + "\"" + lang + "/tdtd" + lines + " " + per + "/td/tr"
line = file.readline()
print "/table"
print "h2Totals/h2"
while line == "\n":
line = file.readline()
print "table"
print "trtdTotal Physical Lines of Code (SLOC):/tdtd" + strip(split(line,"=")[1]) + "/td/tr"
line = file.readline()
print "trtdEstimated development effort:/tdtd" + strip(split(line,"=")[1]) + " person-years (person-months)/td/tr"
line = file.readline()
line = file.readline()
print "trtdSchedule estimate:/tdtd" + strip(split(line,"=")[1]) + " years (months)/td/tr"
line = file.readline()
line = file.readline()
print "trtdTotal estimated cost to develop:/tdtd" + strip(split(line,"=")[1]) + "/td/tr"
print "/table"
file.close()
print "Please credit this data as \"generated using 'SLOCCount' by David A. Wheeler.\"\n"
print "/body"
print "/html"
Q2: 代码统计工具,要支持差异统计,如:代码修改行数、删除行数、新增行数等
我想你要的正是TortoiseSVN,使用方法见
他的代码差异统计功能无庸质疑
另外介绍一个也是统计代码差异的工具:StatSVN
StatSVN能够从Subversion版本库中取得信息,然后生成描述项目开发的各种表格和图表。比如:总代码行数;代码行数的时间线;针对每个开发者的代码行数;开发者的活跃程度;开发者最近所提交的;文件数量;平均文件大小;最大文件;哪个文件是修改最多次数的;目录大小;带有文件数量和代码行数的Repository tree。StatSVN当前版本能够生成一组包括表格与图表的静态HTML文档。
Q3: java 实现报表统计
java本身没有操作excel的工具,需要第三方的jar包,用jxl就可以,代码入下。
jxl你上百度搜索后下载就可以,简单易用,不懂追问。
public boolean exportExcel(HttpServletResponse response,Listcityinfo list)
{
try
{
OutputStream os = response.getOutputStream();// 取得输出流
response.reset();// 清空输出流
response.setHeader("Content-disposition", "attachment; filename=fine.xls");// 设定输出文件头
response.setContentType("application/msexcel");// 定义输出类型
WritableWorkbook wbook = Workbook.createWorkbook(os); // 建立excel文件
String tmptitle = "标题"; // 标题
WritableSheet wsheet = wbook.createSheet("详细信息表", 0); // sheet名称
WritableSheet wsheet = wbook.createSheet("性别统计表", 1); // sheet名称
WritableSheet wsheet = wbook.createSheet("证件类型统计表", 2); // sheet名称
// 设置excel标题
WritableFont wfont = new WritableFont(WritableFont.ARIAL, 16,WritableFont.BOLD,
false,UnderlineStyle.NO_UNDERLINE,Colour.BLACK);
WritableCellFormat wcfFC = new WritableCellFormat(wfont);
wcfFC.setBackground(Colour.AQUA);
wsheet.addCell(new Label(1, 0, tmptitle, wcfFC));
wfont = new jxl.write.WritableFont(WritableFont.ARIAL, 14,WritableFont.BOLD,
false, UnderlineStyle.NO_UNDERLINE,Colour.BLACK);
wcfFC = new WritableCellFormat(wfont);
// 开始生成主体内容
wsheet.addCell(new Label(0, 2, "具体内容"));
for(int i=0;ilist.size();i++) br=""{
wsheet.addCell(new Label(0, i+3, "");
wsheet.addCell(new Label(1, i+3,"");
}
// 主体内容生成结束
wbook.write(); // 写入文件
wbook.close();
os.close(); // 关闭流
return true;
}
catch(Exception ex)
{
ex.printStackTrace();
return false;
}
}
Q4: PMD拜托各位了 3Q
PMD有很多种意思 具体如下 一、物理介质关联层接口 万兆以太网的物理(PHY)层规范和所支持的光学部件部分在IEEE802.3ae中定义。在以太网标准中,光学部件部分被称为“物理介质关联层接口(PMD-Physical Media Dependent)”。 二、偏振模色散 偏振模色散 指单模光纤中偏振色散,简称PMD(=Polarization Mode Dispersion),是由光纤横截面微小的不对称性引起的色散。这种不对称性引起两个相互垂直的基本偏振模以不同的速度传播。由于经历了色散,即脉冲扩展,当接收器接收到这个合成的脉冲时要比发送端的脉冲宽。 起因于实际的单模光纤中基模含有两个相互垂直的偏振模,沿光纤传播过程中,由于光纤难免受到外部的作用,如温度和压力等因素变化或扰动,使得两模式发生耦合,并且它们的传播速度也不尽相同,从而导致光脉冲展宽,展宽量也不确定,便相当于随机的色散。随着传输速率的提高,该色散对通信系统的影响愈来愈明,而且越来越不可低估。有文献给出由PMD限制的系统最大距离按公式:L最大值=1000/(PMD.比特率)2,式中:L单位为(根号)km,PMD单位为PS/KM,以及比特率单位为Gb/s。国际上一些标准组织,如IEC、TIA和ITU考虑制定这种随机性色散的统计特性和相应的测试方法。在数字传输系统中,PMD的主要影响是产生码间干扰。 三、MikuMikuDance模型文件 MikuMikuDance是日本人樋口优所开发,将VOCALOID2的初音未来等角色制作3D模组的免费软件。 简称为MMD。 所用模型文件即为pmd格式 四 便携多媒休辞典 PMD:portable multimedia dictionary 便携多媒体辞典 目前市面流通的电子辞典。以2.4寸、2.8寸、3.5寸居多。TFT真彩色320*240分辨 五 北京金字塔艺术中心--PMD 北京金字塔艺术连锁中心通过多年的努力与论证,2010年正式推出了《金字塔教学模式》,本教学模式是一套严格的4年课程(学生上课与练习时间较少需延长课程至8年以上),通过本模式正规培训的学生均取得了优异的成绩,北京金字塔艺术中心教学宗旨:“培养国内一流鼓手,发掘未来音乐大师,为国内打击乐事业的发展壮大贡献自己的力量”《金字塔教学模式》顾名思义:首先我们找到塔尖级世界一流鼓手需要具备哪些素质,其次我们论证他们的方法并且结合大量的理论依据与实践数据,总结出可行最佳执行方案,最后我们把自己的学员从塔底开始,一步步塑造成未来的大师。让每一个来中心学习的学员都得到最正规的培训,少走弯路、早日成功。金字塔教学模式高级课程是总部投资的背景音乐,每首5000元以上,均为国内顶级音乐制作人中国最知名吉他大师汶麟先生亲自用吉他录制,本公司拥有背景音乐的版权。 六 架子鼓品牌-外置可调音量架子鼓 PMD-外置可调音量架子鼓解决了困扰多年的架子鼓扰民问题 七 飞机上的多媒体娱乐系统PMD PMD是拥有7英寸液晶屏、外观优雅简洁的手持式娱乐设备,操作简单便捷,超大容量能容纳30多部电影、2000多分钟电视节目、500多首歌曲以及各类中外名著。南航航班上有配备。 八 软件行业的JAVA代码静态分析工具 PMD是一种开源分析Java代码错误的工具。与其他分析工具不同的是,PMD通过静态分析获知代码错误。也就是说,在不运行Java程序的情况下报告错误。PMD附带了许多可以直接使用的规则,利用这些规则可以找出Java源程序的许多问题。此外,用户还可以自己定义规则,检查Java代码是否符合某些特定的编码规范。 PMD的核心是JavaCC解析器生成器。PMD结合运用JavaCC和EBNF(扩展巴科斯-诺尔范式,Extended Backus-Naur Formal)语法,再加上JJTree,把Java源代码解析成抽象语法树(AST,Abstract Syntax Tree)。 PMD是一款采用BSD协议发布的Java程序代码检查工具。该工具可以做到检查Java代码中是否含有未使用的变量、是否含有空的抓取块、是否含有不必要的对象等。该软件功能强大,扫描效率高,是Java程序员debug的好帮手。 PMD支持的编辑器包括: JDeveloper、Eclipse、JEdit、JBuilder、BlueJ、CodeGuide、NetBeans/Sun Java Studio Enterprise/Creator、IntelliJ IDEA、TextPad、Maven、Ant,、Gel、JCreator和Emacs。 九PMD 产品组合决策 PMD(Product Mix Decision),产品组合决策。是指在一定资源约束条件下,企业该如何安排产品组合,以实现一定时间内收益最大化的问题。
采纳哦
Q5: 如何统计一个时间段java代码更新量
使用代码版本管理工具啊,例如svn、moven等等。 版本管理工具会记录你的代码更新情况,改动、新增、删除等操作都会详细记录的。 你安装一个版本工具服务端和客户端就行。
java代码统计工具的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java 统计、java代码统计工具的信息别忘了在本站进行查找喔。







