0


Idea中使用Statistic插件统计工程项目代码量

1. 功能背景

公司要对一个项目进行代码统计,这么多类,总不能让我一个一个数据,于是想到了Statistic插件。让我们一起看看Statistic插件怎么使用吧。

2. Statistic插件

首先需要知道Idea统计项目代码行数,主要是使用Statistic插件来统计,点击File->Settings,如下图所示:

image-20230831164908348

进去Settings界面之后,点击Plugins,然后点击下方正中间的Marketplace,如下图所示:

image-20230831165623377

搜索Statistic,选中之后,点击右侧的Install进行安装插件即可,安装完成点击Apply->Ok即可。

然后在左下方可以看到Statistic,若看不到则重启idea即可。

3. 统计代码量

点击下面任务栏的Statistic标签,如下图:

image-20230831165817480

这个时候是没有统计的,如果需要统计的话,点击"Refresh"扫描项目代码,如下图:

image-20230831165850829

Overview 参数说明(例如java)

  • Count : java文件的数量
  • Size SUM : java所有文件总占用硬盘大小
  • Size MIN : java文件的最小文件占用硬盘大小
  • Size MAX : java文件的最大文件占用硬盘大小
  • Size AVG : java文件的平均占用硬盘大小
  • Lines : java文件的总行数
  • Lines MIN : java文件的最小行数
  • Lines MAX : java文件的最大行数
  • Lines AVG : java文件的平均行数

上文中统计出来是全部代码,如果我们统计对应类型的代码,可以点击我们需要统计的标签,例如Java,可以看到对应对象的代码统计,如下图:

image-20230831170047999

指定文件类型(如java)统计参数说明

  • Total Lines :代码总行数(包括注释,空行)
  • Source Code Lines :源代码行数(不包括注释,空行)
  • Source Code Lines(%) :源代码行数百分比(Source Code Lines/Total Lines)
  • Comment Lines :注释行数
  • Comment Lines(%) : 注释行数百分比(Comment Lines/Total Lines)
  • Blank Lines : 空行数
  • Blank Lines(%) : 空行百分比(Blank Lines/Total Lines)

可见,可对不同类型,从不同维度对工程项目的代码量进行统计,就可以统计工程中的代码行数。

4. 测试一下吧

我承认我就是来凑数的~

随便找个类吧,这里用

InitDataConfig.java
packagecom.maple.inputdb.config;importcom.maple.inputdb.bean.InitModel;importlombok.AllArgsConstructor;importlombok.extern.slf4j.Slf4j;importorg.springframework.stereotype.Component;importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileWriter;importjava.io.IOException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;/**
 * @author 笑小枫 <https://xiaoxiaofeng.com/>
 * @date 2023/3/10
 */@Slf4j@Component@AllArgsConstructorpublicclassInitDataConfig{privatefinalDynamicDatasourceConfig dynamicDatasourceConfig;privatefinalInitConfigProperties initConfigProperties;publicvoidinitData(InitModel initModel){if(DbStatusSingleton.getInstance().getDbStatus()||Boolean.TRUE.equals(dynamicDatasourceConfig.checkDataSource())){thrownewRuntimeException("数据已完成初始化,请勿重复操作");}// 检查数据库连接是否正确checkConnection(initModel);if(!newFile(initConfigProperties.getInitFilePath()+ initConfigProperties.getInitUserName()).exists()){File file =createFile(initConfigProperties.getInitFilePath(), initConfigProperties.getInitUserName());try(FileWriter out =newFileWriter(file);BufferedWriter bw =newBufferedWriter(out)){
                bw.write("userName="+ initModel.getSysUserName());
                bw.newLine();
                bw.write("password="+ initModel.getSysPassword());
                bw.flush();}catch(IOException e){
                log.info("写入管理员信息文件失败", e);thrownewRuntimeException("写入管理员信息文件失败,请重试");}}if(!newFile(initConfigProperties.getInitFilePath()+ initConfigProperties.getInitDbName()).exists()){File file =createFile(initConfigProperties.getInitFilePath(), initConfigProperties.getInitDbName());try(FileWriter out =newFileWriter(file);BufferedWriter bw =newBufferedWriter(out)){

                bw.write(String.format("jdbcUrl=jdbc:mysql://%s:%s/%s?autoReconnect=true&autoReconnectForPools=true&useUnicode=true&characterEncoding=UTF-8",
                        initModel.getDatabaseHost(), initModel.getDatabasePort(), initModel.getDatabaseName()));
                bw.newLine();
                bw.write("username="+ initModel.getUser());
                bw.newLine();
                bw.write("password="+ initModel.getPassword());
                bw.newLine();
                bw.write("driverClassName=com.mysql.cj.jdbc.Driver");
                bw.flush();}catch(IOException e){
                log.info("写入数据库文件失败", e);thrownewRuntimeException("写入数据库文件失败,请重试");}}boolean isOk = dynamicDatasourceConfig.checkDataSource();if(!isOk){thrownewRuntimeException("初始化数据库信息失败,请检查配置是否正确");}}/**
     * 检查数据库连接是否正确
     *
     * @param initModel 连接信息
     */privatevoidcheckConnection(InitModel initModel){try{Class.forName("com.mysql.cj.jdbc.Driver");Connection conn =DriverManager.getConnection(String.format("jdbc:mysql://%s:%s/%s",
                    initModel.getDatabaseHost(), initModel.getDatabasePort(), initModel.getDatabaseName()), initModel.getUser(), initModel.getPassword());
            log.info("校验数据库连接成功,开始进行数据库配置"+ conn.getCatalog());
            conn.close();}catch(SQLException|ClassNotFoundException e){
            log.info("校验数据库连接失败", e);thrownewRuntimeException("初始化数据库信息失败,请检查配置是否正确:"+ e.getMessage());}}privateFilecreateFile(String path,String fileName){File pathFile =newFile(path);if(pathFile.mkdirs()){
            log.info(path +" is not exist, this is auto created.");}File file =newFile(path +File.separator + fileName);try{if(!file.createNewFile()){thrownewRuntimeException(String.format("创建%s文件失败,请重试", fileName));}}catch(IOException e){
            log.error(String.format("创建%s文件失败", fileName), e);thrownewRuntimeException(String.format("创建%s文件失败,请重试", fileName));}return file;}publicvoiddeleteFile(){File sqlFile =newFile(initConfigProperties.getInitFilePath()+ initConfigProperties.getInitDbName());if(sqlFile.exists()){
            log.info(sqlFile.getName()+" --- delete sql file result:"+ sqlFile.delete());}File userFile =newFile(initConfigProperties.getInitFilePath()+ initConfigProperties.getInitUserName());if(userFile.exists()){
            log.info(userFile.getName()+" --- delete user file result:"+ userFile.delete());}

        dynamicDatasourceConfig.stopDataSource();// 数据初始化状态设为falseDbStatusSingleton.getInstance().setDbStatus(false);
        log.info("初始化数据重置完成");}}

当我们打开该文件,选择

 Refresh on selection

,可以看到单个文件的统计情况。

image-20230831171247624

嗯呢,学会了吧,就不水了,本文到此结束了

关注我吧,带你学会更多的小技巧。

标签: intellij idea idea java

本文转载自: https://blog.csdn.net/qq_34988304/article/details/132607408
版权归原作者 笑小枫 所有, 如有侵权,请联系我们删除。

“Idea中使用Statistic插件统计工程项目代码量”的评论:

还没有评论