Utilice el complemento de estadística en Idea para contar el volumen de código de proyectos de ingeniería

1. Antecedentes funcionales

La empresa quiere realizar estadísticas de código en un proyecto, con tantas categorías no puedo permitirme tener datos uno por uno, así que pensé en el complemento Estadística. Echemos un vistazo a cómo utilizar el complemento de estadísticas.

2. Complemento de estadísticas

Primero, necesita saber el número de líneas de código en el proyecto de estadísticas de Idea. Utiliza principalmente el complemento de estadísticas para contar. Haga clic en Archivo->Configuración, como se muestra en la siguiente figura:

imagen-20230831164908348

Después de ingresar a la interfaz de Configuración, haga clic en Complementos y luego haga clic en Marketplace en el medio a continuación, como se muestra en la siguiente figura:

imagen-20230831165623377

Busque Estadística, selecciónela, haga clic en Instalar a la derecha para instalar el complemento y haga clic en Aplicar->Aceptar una vez completada la instalación.

Luego podrá ver Estadísticas en la esquina inferior izquierda, si no puede verlas, simplemente reinicie la idea.

3. Cuente la cantidad de código

Haga clic en la pestaña Estadística en la barra de tareas a continuación, como se muestra en la siguiente figura:

imagen-20230831165817480

No hay estadísticas en este momento. Si se necesitan estadísticas, haga clic en "Actualizar" para escanear el código del proyecto, como se muestra a continuación:

imagen-20230831165850829

Descripción general del parámetro (como java)

  • Recuento: el número de archivos java
  • Tamaño SUMA: el tamaño total del disco duro ocupado por todos los archivos java
  • Tamaño MIN: el tamaño mínimo del disco duro ocupado por el archivo java
  • Tamaño MAX: el tamaño máximo del disco duro ocupado por el archivo java
  • Tamaño AVG: tamaño promedio del disco duro ocupado por archivos java
  • Líneas: el número total de líneas en el archivo java.
  • Líneas MIN: el número mínimo de líneas en el archivo java.
  • Líneas MAX: el número máximo de líneas en un archivo java
  • Líneas AVG: número promedio de líneas en archivos java

Las estadísticas anteriores son todos códigos. Si contamos el tipo de código correspondiente, podemos hacer clic en la etiqueta que necesitamos contar, como Java, y podemos ver las estadísticas del código del objeto correspondiente, como se muestra a continuación:

imagen-20230831170047999

Descripción de parámetros estadísticos para un tipo de archivo específico (como java)

  • Líneas totales: líneas totales de código (incluidos comentarios, líneas en blanco)
  • Líneas de código fuente: número de líneas de código fuente (excluidos comentarios y líneas en blanco)
  • Líneas de código fuente (%): porcentaje de líneas de código fuente (líneas de código fuente/líneas totales)
  • Líneas de comentarios: número de líneas de comentarios
  • Líneas de comentarios (%): porcentaje de líneas de comentarios (líneas de comentarios/líneas totales)
  • Líneas en blanco: número de líneas en blanco
  • Líneas en blanco (%): Porcentaje de líneas en blanco (líneas en blanco/líneas totales)

Se puede ver que la cantidad de código de proyectos de ingeniería se puede contar para diferentes tipos y desde diferentes dimensiones, y se puede contar el número de líneas de código en el proyecto.

4. Pruébalo

Admito que sólo estoy aquí para compensar los números~

Simplemente busque cualquier clase y úsela aquí.InitDataConfig.java

package com.maple.inputdb.config;

import com.maple.inputdb.bean.InitModel;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * @author 笑小枫 <https://xiaoxiaofeng.com/>
 * @date 2023/3/10
 */
@Slf4j
@Component
@AllArgsConstructor
public class InitDataConfig {
    
    

    private final DynamicDatasourceConfig dynamicDatasourceConfig;

    private final InitConfigProperties initConfigProperties;

    public void initData(InitModel initModel) {
    
    

        if (DbStatusSingleton.getInstance().getDbStatus()
                || Boolean.TRUE.equals(dynamicDatasourceConfig.checkDataSource())) {
    
    
            throw new RuntimeException("数据已完成初始化,请勿重复操作");
        }

        // 检查数据库连接是否正确
        checkConnection(initModel);

        if (!new File(initConfigProperties.getInitFilePath() + initConfigProperties.getInitUserName()).exists()) {
    
    
            File file = createFile(initConfigProperties.getInitFilePath(), initConfigProperties.getInitUserName());
            try (FileWriter out = new FileWriter(file);
                 BufferedWriter bw = new BufferedWriter(out)) {
    
    
                bw.write("userName=" + initModel.getSysUserName());
                bw.newLine();
                bw.write("password=" + initModel.getSysPassword());
                bw.flush();
            } catch (IOException e) {
    
    
                log.info("写入管理员信息文件失败", e);
                throw new RuntimeException("写入管理员信息文件失败,请重试");
            }
        }

        if (!new File(initConfigProperties.getInitFilePath() + initConfigProperties.getInitDbName()).exists()) {
    
    
            File file = createFile(initConfigProperties.getInitFilePath(), initConfigProperties.getInitDbName());
            try (FileWriter out = new FileWriter(file);
                 BufferedWriter bw = new BufferedWriter(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);
                throw new RuntimeException("写入数据库文件失败,请重试");
            }
        }

        boolean isOk = dynamicDatasourceConfig.checkDataSource();
        if (!isOk) {
    
    
            throw new RuntimeException("初始化数据库信息失败,请检查配置是否正确");
        }
    }

    /**
     * 检查数据库连接是否正确
     *
     * @param initModel 连接信息
     */
    private void checkConnection(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);
            throw new RuntimeException("初始化数据库信息失败,请检查配置是否正确:" + e.getMessage());
        }
    }

    private File createFile(String path, String fileName) {
    
    
        File pathFile = new File(path);
        if (pathFile.mkdirs()) {
    
    
            log.info(path + " is not exist, this is auto created.");
        }
        File file = new File(path + File.separator + fileName);
        try {
    
    
            if (!file.createNewFile()) {
    
    
                throw new RuntimeException(String.format("创建%s文件失败,请重试", fileName));
            }
        } catch (IOException e) {
    
    
            log.error(String.format("创建%s文件失败", fileName), e);
            throw new RuntimeException(String.format("创建%s文件失败,请重试", fileName));
        }
        return file;
    }

    public void deleteFile() {
    
    
        File sqlFile = new File(initConfigProperties.getInitFilePath() + initConfigProperties.getInitDbName());
        if (sqlFile.exists()) {
    
    
            log.info(sqlFile.getName() + " --- delete sql file result:" + sqlFile.delete());
        }

        File userFile = new File(initConfigProperties.getInitFilePath() + initConfigProperties.getInitUserName());
        if (userFile.exists()) {
    
    
            log.info(userFile.getName() + " --- delete user file result:" + userFile.delete());
        }

        dynamicDatasourceConfig.stopDataSource();

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

Cuando abrimos el archivo y lo seleccionamos Refresh on selection, podemos ver las estadísticas de un solo archivo.

imagen-20230831171247624

Bueno, aprendamos, no es suficiente, este artículo terminó.

Sígueme y te enseñaré más consejos.

Supongo que te gusta

Origin blog.csdn.net/qq_34988304/article/details/132607408
Recomendado
Clasificación