UNPKG

js-code-audit

Version:

Js Code audit helps programmers to write better Javascript code

72 lines (56 loc) 1.88 kB
const fs = require("fs"); // Function to crawl each .js file in a directory recursively let filesFound = []; function crawlFiles(directory) { const files = fs.readdirSync(directory); files.forEach((file) => { const filePath = `${directory}/${file}`; const fileStat = fs.statSync(filePath); if (fileStat.isDirectory()) { crawlFiles(filePath); // Recursively crawl subdirectories } else if (filePath.endsWith(".js")) { filesFound.push(filePath); console.log(""); console.log("File Found: " + filePath); console.log("Code Lines: " + countLinesOfCode(filePath)); console.log("Comments Presents: " + hasComments(filePath)); console.log("Comments lines count: " + countCommentLines(filePath)); console.log(""); } }); return filesFound; } function countLinesOfCode(filePath) { const fileContent = fs.readFileSync(filePath, "utf-8"); const lines = fileContent.split("\n"); let lineCount = 0; for (const line of lines) { const trimmedLine = line.trim(); if (trimmedLine !== "" && !trimmedLine.startsWith("//")) { lineCount++; } } return lineCount; } function hasComments(filePath) { const fileContent = fs.readFileSync(filePath, "utf-8"); const commentRegex = /(\/\/.*)|(\/\*[\s\S]*?\*\/)/; return commentRegex.test(fileContent); } function countCommentLines(filePath) { const fileContent = fs.readFileSync(filePath, "utf-8"); const lines = fileContent.split("\n"); let commentLineCount = 0; for (const line of lines) { const trimmedLine = line.trim(); if ( trimmedLine.startsWith("//") || trimmedLine.startsWith("/*") || trimmedLine.endsWith("*/") ) { commentLineCount++; } } return commentLineCount; } module.exports = { crawlFiles };