当前位置: 首页 > news >正文

Node.js代码统计神器

统计代码行数

使用Node.js编写一个脚本,统计指定目录下所有文件的代码行数。

const fs = require('fs'); const path = require('path'); function countLinesInFile(filePath) { const content = fs.readFileSync(filePath, 'utf-8'); return content.split('\n').length; } function countLinesInDirectory(directory, extensions = ['.js']) { let totalLines = 0; function traverse(dir) { const files = fs.readdirSync(dir); files.forEach(file => { const fullPath = path.join(dir, file); const stat = fs.statSync(fullPath); if (stat.isDirectory()) { traverse(fullPath); } else if (extensions.includes(path.extname(file))) { const lines = countLinesInFile(fullPath); console.log(`${fullPath}: ${lines} lines`); totalLines += lines; } }); } traverse(directory); return totalLines; } const targetDir = process.argv[2] || '.'; const total = countLinesInDirectory(targetDir); console.log(`Total lines: ${total}`);

统计代码字符数

统计指定文件中各种字符的出现频率。

function countCharacters(text) { const result = {}; for (const char of text) { result[char] = (result[char] || 0) + 1; } return Object.entries(result) .sort((a, b) => b[1] - a[1]) .reduce((acc, [key, value]) => { acc[key] = value; return acc; }, {}); } const text = fs.readFileSync('example.js', 'utf-8'); console.log(countCharacters(text));

统计代码复杂度

使用简单的复杂度计算方法统计代码中的条件语句数量。

function calculateComplexity(code) { const complexityPatterns = [ /if\s*\(/g, /for\s*\(/g, /while\s*\(/g, /case\s+/g, /\?\s*.+:/g ]; return complexityPatterns.reduce((total, pattern) => { const matches = code.match(pattern) || []; return total + matches.length; }, 0); } const code = fs.readFileSync('example.js', 'utf-8'); console.log(`Code complexity: ${calculateComplexity(code)}`);

统计代码注释比例

计算代码中注释占总代码量的比例。

function calculateCommentRatio(code) { const totalLines = code.split('\n').length; const commentLines = code.split('\n').filter(line => { return line.trim().startsWith('//') || line.includes('/*'); }).length; return (commentLines / totalLines * 100).toFixed(2); } const code = fs.readFileSync('example.js', 'utf-8'); console.log(`Comment ratio: ${calculateCommentRatio(code)}%`);

编程语言C++ziqihao.cn++c语言的魅力
编程语言C++swsci.cn++c语言的魅力

编程语言C++www.ziqihao.cn++c语言的魅力
编程语言C++www.swsci.cn++c语言的魅力

编程语言C++www.share.ziqihao.cn++c语言的魅力
编程语言C++www.share.swsci.cn++c语言的魅力

编程语言C++www.blog.ziqihao.cn++c语言的魅力
编程语言C++www.blog.swsci.cn++c语言的魅力

编程语言C++read.share.ziqihao.cn++c语言的魅力
编程语言C++read.share.swsci.cn++c语言的魅力

这些代码片段可以根据实际需求进行组合或修改,用于不同的代码统计场景。使用时需要注意文件编码和路径处理等问题。

http://www.jsqmd.com/news/275075/

相关文章:

  • 存储技术全解:从基础到前沿
  • 存储技术全解:从基础到前沿
  • 基于广义Benders分解法的综合能源系统优化规划Matlab代码
  • SCADA与数字孪生(Digital Twin)系统的异同点在哪里?
  • 基于多目标粒子群算法冷热电联供综合能源系统运行优化Matlab实现
  • 洛谷 P10962:Computer ← 换根DP
  • SCADA与数字孪生(Digital Twin)系统的异同点在哪里?
  • AI狂飙与冷思考:一个准码农的2026开年观察
  • 完整教程:人机交互(如 VR 手柄追踪、光标移动、手势识别)的滤波算法
  • 【读书笔记】《稻盛和夫自传》
  • 《把脉行业与技术趋势》-65-当你的人生轨迹与民族复兴的长波、技术革命的中波、行业爆发的短波同频共振时,平凡的努力,也会被时代放大成非凡的成就——这,便是“着道”的现代诠释。
  • AI生成SQL的安全风险与测试框架
  • 线段树合并
  • 454. 四数相加 II-day06
  • 《把脉行业与技术趋势》-69-股票的周期、产品的周期、企业的周期的相似性与不同,以及它们各自在不同阶段关注的重点和核心要素不同
  • 大数据毕设选题推荐:基于大数据技术的Django框架下的学习资源推送系统的设计与实现基于Django+大数据的学习资源推送系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 若思中国发布2026年十大最具影响力战略咨询大师推荐榜 - 资讯焦点
  • 大模型测试的“评估指标”:BLEU?ROUGE?都不够!
  • 互联网大厂Java面试场景:分布式系统与微服务架构
  • 品牌整合营销战略咨询公司哪家靠谱? - 资讯焦点
  • 寒假学习笔记1.18
  • ‌构建“大模型测试沙箱”:隔离、监控、审计的工程实践指南
  • 含分布式电源的配电网日前两阶段优化调度模型-无功优化Matlab代码
  • 多模态RAG不止知识问答:文搜图与图搜图的四种实现方案
  • 大数据计算机毕设之基于Django的在线学习资源分享与推荐系统基于Django+大数据的学习资源推送系统(完整前后端代码+说明文档+LW,调试定制等)
  • kotlin 类委托
  • ‌大模型测试必须包含“多轮对话压力测试”
  • 58、IMX6ULL 裸机开发实战:从汇编启动代码到 LED 闪烁(Ubuntu 篇)
  • MySQL常用命令
  • 【完整版代码】含分布式电源的配电网日前两阶段优化调度模型Matlab代码