js-code-audit
Version:
Js Code audit helps programmers to write better Javascript code
72 lines (56 loc) • 1.88 kB
JavaScript
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 };