`
wujingyong
  • 浏览: 3167 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
文章分类
社区版块
存档分类
最新评论

统计java代码小工具

阅读更多


最近做一个项目,eclipse版本没有带统计代码行数的插件,公司还不能随便上网。所以在网上找了找资料,发现用java做的多少都稍有问题,便自己改了改,实现如下:统计代码行数:包括java,jsp,js文件。统计可以按照单个文件统计,也可以按照目录统计(包含子目录)。
以下是运行后的截图和部分代码。


package codeComprehensive;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
public class CountCodes extends JFrame{
private static final long serialVersionUID = 1L;
    private long codeLines = 0; // 单个文件的代码行数
    private long commentLines = 0; // 单个文件的注释行数
    private long allBlankLines = 0; // 单个文件的空行行数
    private long allLines = 0; // 单个文件的总行数
    private long allCodeLines = 0; // 总代码行数
    private long allCcommentLines = 0; // 总的注释行数
    private long blankLines = 0; // 总空行行数
    private long allFilesLines =0;// 多个文件的总行数
    private File fileName;
    
    private JLabel pathLabel;
    private JTextField pathField;
    private JButton openButton;
    private JButton clearButton;
    private JPanel panelNorth, panelSouth, clearPanel;
    private ArrayList<File> list = new ArrayList<File> ();
    private String[] tableHeader = {"File Name", "Code Lines", "Comment Lines", "Blank Lines", "All Lines"};
    private Vector<String> vectorHeader = new Vector<String> ();
    // 统计结果结合
    private Vector<Vector> values = new Vector<Vector> ();
    // 综合统计行数据
    private Vector<String> allValues = new Vector<String> ();
    private JTable table;
    private DefaultTableModel tableModel;
    private JScrollPane scrollPane;
    public CountCodes(){
        super("Welcome to use Count Codes --wujingyong");
        pathLabel = new JLabel("File Directory : ");
        pathField = new JTextField(100);
        pathField.setEditable(false);
        openButton = new JButton("Open");
        clearButton = new JButton("Clear");
        openButton.addActionListener(
                new ActionListener(){
                    public void actionPerformed(ActionEvent event){
                     ////////每次统计前,先清空之前的统计结果/////////
                     int a = tableModel.getRowCount();
                     while(a>0)
                       {  
                        a--;
                        tableModel.removeRow(a);
                       }
                    
                     ////////////
                        openFile();
                        
                        if (fileName == null) {
                            return;
                        }
                     // 如果清空了统计记录,则重新统计;否则包含之前的统计记录
                        if (tableModel.getRowCount() == 0) {
                         list = new ArrayList<File>();
                 }
                        analysisFileOrDir(fileName);
                      
                        for(File file : list){
                            analyze(file);
                        }  
                        ////////////追加最后一行总数的统计//////////////////
                        if (values.size()!=0 ) {
                         // 清空之前的最后统计数据
                         allValues = new Vector<String>();
                         // 追加本次统计的最后综合数据
                          allValues.add("Lines SUM :");
                                 allValues.add(String.valueOf(allCodeLines));
                                 allValues.add(String.valueOf(allCcommentLines));
                                 allValues.add(String.valueOf(allBlankLines));
                                 allFilesLines = allCodeLines + allCcommentLines + allBlankLines;
                                 allValues.add(String.valueOf(allFilesLines));
                         values.add(allValues);
                         // 统计后,清空各项综合统计数据
                          zeroAllLines();
                        
                  }
                        //////////////////////////////
                    }
                });
        clearButton.addActionListener(new ActionListener(){
                    public void actionPerformed(ActionEvent event){
                     int a = tableModel.getRowCount();
                     while(a>0)
                       {  
                        a--;
                        tableModel.removeRow(a);
                       }
                    }
                });
        panelNorth = new JPanel();
        clearPanel = new JPanel();
        clearPanel.add(clearButton);
        clearPanel.add(openButton);
        panelNorth.setLayout(new BorderLayout());
        panelNorth.add(pathLabel, BorderLayout.WEST);
        panelNorth.add(pathField, BorderLayout.CENTER);
        panelNorth.add(clearPanel, BorderLayout.EAST);
        for (int i=0; i<tableHeader.length; i++) {
            vectorHeader.add(tableHeader);
        }
        // 追加统计结果
        tableModel = new DefaultTableModel(values, vectorHeader);
        
        table = new JTable(tableModel);
        
        scrollPane = new JScrollPane(table);
        
        panelSouth = new JPanel();
        panelSouth.setLayout(new BorderLayout());
        panelSouth.add(scrollPane, BorderLayout.CENTER);
        
        setLayout(new BorderLayout());
        add(panelNorth, BorderLayout.NORTH);
        add(panelSouth, BorderLayout.CENTER);
        
        setBounds(222,200,512,400);
        setVisible(true);
    }
    
    public static void main(String args[]){
        CountCodes countCodes = new CountCodes();
        countCodes.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    } 
1
0
分享到:
评论

相关推荐

    java代码统计工具

    在这个场景中,我们关注的是一个名为"java代码统计工具"的应用,它专门用于统计.java文件中的代码行数和注释行数。这个工具包含了三个关键文件:`java代码统计工具.exe`是可执行程序,用户可以直接运行来执行统计;`...

    Java代码统计工具

    Java代码统计工具是一款专为Java开发者设计的实用小软件,旨在帮助程序员高效地分析和量化他们的代码库。这款工具能够提供一系列详细的统计信息,有助于理解项目中的代码结构和质量。以下将详细介绍该工具的主要功能...

    代码统计工具【java】

    例如,输入`cloc --by-file --include-lang=Java .`,其中`.`代表当前目录,`--include-lang=Java`确保只统计Java文件。CLOC会返回一个详细的报告,包括每种类型(如代码、注释、空行)的行数。 3. **PMD和...

    java代码行数统计工具

    针对Java编程语言,有一个专门用于统计代码行数的工具,它不仅适用于Java,还支持C++、Delphi和C#等其他编程语言。本文将详细介绍这个名为"IrisCodeCounter"的工具,以及如何利用它来有效地分析和管理代码库。 ...

    JAVA代码统计工具,可以按人统计,很不错

    Java代码统计工具是一种用于分析和量化Java源代码的软件,主要功能是对代码量进行统计,以便于项目管理和团队协作。这种工具通常可以帮助开发者、项目经理和质量保证人员了解项目的规模、复杂性和开发进度。它们能够...

    java代码统计工具及完整代码参考.pdf

    Java代码统计工具是一种小型应用程序,用于计算特定目录下Java源代码的总行数、注释行数和空格行数。这个程序设计为在Windows 7和XP操作系统上运行,但在其他非Windows环境下可能需要对代码进行修改才能正常工作。...

    java开发代码注释情况统计工具

    这是本人自己开发的一款java代码注释统计工具,支持统计总行数,总代码行数,总注释行数,注释率,注释合格率自定义,统计详细,单个文件统计情况,可导出统计报告等! 注:本软件未捆绑jre(java环境),需要在已...

    java代码统计工具-java代码统计工具

    非常好用的JAVA代码统计工具,直接执行即可

    统计java代码行数

    统计Java代码行数的方法有很多种,这里我们将介绍手动统计和使用工具自动统计两种方式。 1. **手动统计**: - 打开`mypro.rar`压缩包,解压后找到包含Java源代码的`.java`文件。 - 使用文本编辑器打开文件,逐行...

    代码行统计工具java源码

    《代码行统计工具Java源码解析》 在软件开发中,代码行数(Lines of Code,简称LOC)常被用作衡量项目规模和工作量的一个参考指标。代码行统计工具可以帮助开发者快速了解项目的整体结构,便于管理和优化。本文将...

    统计源代码行数工具exe

    "统计源代码行数工具exe"正是这样一款实用工具,它允许用户快速地对代码库进行分析,统计不同类型的代码文件行数。 这款工具的主要功能在于它的易用性和灵活性。作为一个.exe可执行文件,用户无需安装任何额外的...

    代码统计工具 cct

    代码统计工具CCT,全称为Count_Code Tool CCTsetup,是一款专为软件开发人员设计的实用工具,用于量化分析项目中的代码量。它可以帮助开发者、项目经理和团队更好地理解项目的规模,评估工作进度,以及进行代码质量...

    代码量统计小工具V1.0

    《代码量统计小工具V1.0:洞察编程工作的新视角》 在软件开发的世界里,代码量常常被用作衡量项目规模、开发者工作量以及软件复杂性的一个关键指标。"代码量统计小工具V1.0"就是这样一款实用的应用,它能够帮助...

    java代码统计小工具

    Java代码统计小工具是一款实用的开发辅助程序,它能够帮助程序员快速、准确地了解自己在一天的工作中编写了多少有效的代码行、空行以及注释行。这个工具利用了Java编程语言中的正则表达式(Regular Expression)技术...

    C++、Java代码统计工具

    总的来说,C++和Java代码统计工具是开发流程中不可或缺的一部分,它们通过提供量化数据,帮助开发者更好地理解和管理项目,从而提高开发效率和代码质量。在选择或使用这类工具时,应根据具体需求,考虑其是否支持所...

Global site tag (gtag.js) - Google Analytics