统计代码量的小程序

  比较简陋的统计代码的小工具,  根据自己的需求改改吧.

import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

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.JTextField;
import javax.swing.border.EmptyBorder;

@SuppressWarnings("serial")
public class CountRows extends JFrame {

    private JPanel contentPane;
    private JTextField absolutePath;

    private int num; // 用来存储行数的
    private String path;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    CountRows frame = new CountRows();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public CountRows() {
        setTitle("\u7EDF\u8BA1\u4EE3\u7801\u884C\u6570");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 384, 185);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        absolutePath = new JTextField();
        absolutePath.setBounds(67, 39, 200, 31);
        contentPane.add(absolutePath);
        absolutePath.setColumns(10);

        JLabel lblSrc = new JLabel("src\u8DEF\u5F84");
        lblSrc.setFont(new Font("宋体", Font.PLAIN, 15));
        lblSrc.setBounds(10, 39, 64, 31);
        contentPane.add(lblSrc);

        JButton result = new JButton("\u7EDF\u8BA1\u884C\u6570");
        result.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                String path = absolutePath.getText();
                File file = new File(path);
                try {
                    getTotalRows(file);
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
                JOptionPane.showMessageDialog(contentPane, "代码一共有:" + num + "行");
            }
        });
        result.setFont(new Font("宋体", Font.PLAIN, 14));
        result.setBounds(48, 100, 93, 37);
        contentPane.add(result);

        JButton exit = new JButton("\u9000\u51FA");
        exit.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                System.exit(1);
            }
        });
        exit.setFont(new Font("宋体", Font.PLAIN, 14));
        exit.setBounds(270, 100, 93, 37);
        contentPane.add(exit);

        JButton view = new JButton("\u6D4F\u89C8");
        view.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                JFileChooser jfc = new JFileChooser("c:\\");
                jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
                jfc.setDialogTitle("请选择要统计的src文件夹");
                int result = jfc.showOpenDialog(contentPane);
                if (result == JFileChooser.APPROVE_OPTION) {
                    path = jfc.getSelectedFile().getAbsolutePath();
                    absolutePath.setText(path);
                }
            }
        });
        view.setBounds(277, 36, 81, 37);
        contentPane.add(view);

    }

    /**
     * 写一个方法,用来计算代码量
     *
     * @throws IOException
     */
    private void getTotalRows(File file) throws IOException {

        // 如果是一个目录, 进行递归
        if (file.isDirectory()) {
            File[] files = file.listFiles();
            for (int i = 0; i < files.length; i++) {
                File f = files[i];
                getTotalRows(f);
            }
        } else {
            // 如果是一个文件, 对这个文件进行统计

            // 单纯的统计Java代码
            if( !file.getName().endsWith(".java") ){
                return ;
            }

            BufferedReader br = new BufferedReader(new FileReader(file));
            String read = null;
            while ((read = br.readLine()) != null) {
                // 去换行符
                read.replaceAll("\r", "");
                read.replaceAll("\n", "");
                if ("".equals(read)) {
                    // 如果去除空行之后, 这一行是 "", 则不计数
                    continue;
                }
                num++;
            }
            br.close();
        }
    }
}
时间: 2024-08-21 16:41:01

统计代码量的小程序的相关文章

记录开发代码量的小程序

这段时间在开发网站,想要去记录自己的开发代码量,所以写了一个小脚本,用来记录,代码如下: #-*- coding: UTF-8 -*- #用来检测当前的代码量 import sys,os count = 0 def readfile(file): global count f = open(file,'r') read = f.readlines() for i in read: count+=1 f.close() def check(currentpath): s = os.listdir(

5行代码实现微信小程序图片上传与腾讯免费5G存储空间的使用

本文介绍了如何在微信小程序开发中使用腾讯官方提供的云开发功能快速实现图片的上传与存储,以及介绍云开发的 5G 存储空间的基本使用方法,这将大大提高微信小程序的开发效率,同时也是微信小程序系列教程的视频版更新的文字版本摘要. 此文为 「60 节实战课微信小程序开发视频教程」 的第 51 小节内容,如果需要查看视频版本的实战操作,请直接跳至文章的最后部分查看. 1.云开发图片空间简介 在之前的文章 微信小程序开发平台新功能「云开发」快速上手体验 中我们简要介绍了腾讯官方给所有的微信小程序开发提供的云

完美反编译任何小程序完整代码,扒小程序

废话不多说,直接上主题. 1.第一步下载一个模拟器(推荐使用自带root的模拟器),我使用的是夜神模拟器 下载地址:https://www.yeshen.com/ 2.下载好之后,下载一个RE管理器 3.下载一个zip的压缩软件用来压缩文件 4.在模拟器上装上微信,使用微信访问你需要扒下来的小程序 5.然后打开第二步安装的RE管理器,进入    /data/data/com.tencent.mm/MicroMsg/{数字串}/appbrand/pkg/这个目录,可以看见wxapkg为后缀的文件,

window7下statsvn统计代码量

下载statsvn:http://www.statsvn.org/ 将下载后的statsvn.jar放到d:\svn目录下; 打开cmd窗口切换到需要统计代码的项目目录如:d:\project\web\WebRoot 运行命令: svn log -r {2015-3-1}:{2015-4-1} -v --xml >svn.log 查看在当前目录下是否生成了svn日志svn.log,然后切换到d:\svn目录下运行下条命令: java -jar statsvn.jar d:\project\Web

VS2013 统计代码量(使用正则表达式)

年尾了,需要统计一下今年各个项目的工作量,统计一下各个项目的代码行数: 具体操作步骤如下: 1.选中解决方案,快捷键:Ctrl+Shift+F,打开搜索框,在查找内容中输入正则表达式:"b*[^:b#/]+.*$",查找选项中选中使用正则表达式,查找范围为整个解决方案,如图: 2.点击查找全部: 3.代码行数就出来了.

用Eclipse 统计代码行数小技巧

今天公司SQA问我目前项目代码行数有多少,我当时就是想,以前好像写过类似的统计工具但是一时又找不到 公司网络又不能下载,所以想想eclipse是不是又类似功能,找了下没有,但突然一想有一个转弯方法:统计工程里面的\n个数 1. 按 CTRL+H 打开查找对话框 选择file search 按下图方式输入 注意: I. 输入查找\n, 勾选正则式选项 II. 输入文件匹配, *.java是所有java文件 III. 勾选 Enclosing projects 代表当前项目 点击Search 就可以

(转)用Eclipse 统计代码行数小技巧

今天公司SQA问我目前项目代码行数有多少,我当时就是想,以前好像写过类似的统计工具但是一时又找不到 公司网络又不能下载,所以想想eclipse是不是又类似功能,找了下没有,但突然一想有一个转弯方法:统计工程里面的\n个数 1. 按 CTRL+H 打开查找对话框 选择file search 按下图方式输入 注意: I. 输入查找\n, 勾选正则式选项 II. 输入文件匹配, *.java是所有java文件 III. 勾选 Enclosing projects 代表当前项目 点击Search 就可以

Python 基础实战 -- 统计代码量

1 import os 2 import easygui as g 3 4 def StatisticeCodeLine(dir_name): 5 file_dict = {".py":[0,0],".c":[0,0],".cpp":[0,0],".pas":[0,0],".asm":[0,0]} 6 all_child_dir = os.walk(dir_name) 7 8 for item in all

windows下统计代码量

windows 工具 1.exe程序 http://blog.csdn.net/hui1502/article/details/51191678 https://sourceforge.net/projects/cloc/?source=typ_redirect 2.inetelj  idea 的 statics插件