uni-app 插件讨论 统计代码行 - Doyoung 能否统计代码注释行数

发布于 1周前 作者 htzhanglong 来自 Uni-App

uni-app 插件讨论 统计代码行 - Doyoung 能否统计代码注释行数

插件好用,是否能够统计注释行数?以方便计算代码注释率等信息?

信息类型 内容
开发环境 未提及
版本号 未提及
项目创建方式 未提及
1 回复

uni-app 项目中统计代码行数(包括注释行数)可以通过编写一个简单的脚本实现。以下是一个使用 Node.js 的示例脚本,它可以递归遍历项目目录中的所有 .vue.js 文件,并统计总代码行数和注释行数。

首先,确保你已经安装了 Node.js。然后,你可以创建一个名为 countLines.js 的文件,并将以下代码粘贴进去:

const fs = require('fs');
const path = require('path');

// 忽略的目录和文件
const ignoreDirs = ['.git', 'node_modules'];
const ignoreFiles = ['.DS_Store'];

// 获取文件中的所有行
function getFileLines(filePath) {
  const content = fs.readFileSync(filePath, 'utf8');
  const lines = content.split('\n');
  return lines;
}

// 判断是否为注释行
function isCommentLine(line) {
  return line.trim().startsWith('//') || line.trim().startsWith('/*') || line.trim().endsWith('*/');
}

// 遍历目录
function traverseDir(dir) {
  const files = fs.readdirSync(dir);
  files.forEach(file => {
    const fullPath = path.join(dir, file);
    const stats = fs.statSync(fullPath);

    if (stats.isDirectory()) {
      if (!ignoreDirs.includes(file)) {
        traverseDir(fullPath);
      }
    } else if (stats.isFile() && (path.extname(file) === '.vue' || path.extname(file) === '.js') && !ignoreFiles.includes(file)) {
      const lines = getFileLines(fullPath);
      let totalLines = 0;
      let commentLines = 0;

      lines.forEach(line => {
        totalLines++;
        if (isCommentLine(line)) {
          commentLines++;
        }
      });

      console.log(`${fullPath}: 总行数 = ${totalLines}, 注释行数 = ${commentLines}`);
    }
  });
}

// 从项目根目录开始遍历
const projectRoot = path.join(__dirname, '..'); // 假设脚本在项目根目录的上一级
traverseDir(projectRoot);

使用方法

  1. 将上述脚本保存为 countLines.js 文件。
  2. 确保 countLines.js 文件位于你的 uni-app 项目根目录的上一级目录(或根据需要调整 projectRoot 路径)。
  3. 在终端中运行 node countLines.js

这个脚本会遍历指定目录中的所有 .vue.js 文件,并输出每个文件的总行数和注释行数。注意,这个脚本假设注释行仅包括单行注释(//)和多行注释(/* ... */),并且注释行不会嵌套。对于更复杂的注释处理,可能需要使用更高级的解析器。

回到顶部