Skip to content

Commit

Permalink
Add details about unused variables
Browse files Browse the repository at this point in the history
  • Loading branch information
GeoSot committed Jul 21, 2021
1 parent 6f3f405 commit dafdee9
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 11 deletions.
7 changes: 3 additions & 4 deletions cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,15 @@ async function main() {

const executeForPath = async(arg, ignore) => {
const dir = path.resolve(arg);
console.log(`Searching unused variables in "${chalk.cyan.bold(dir)}"...`);
const unusedVars = await fusv.findAsync(dir, { ignore });

console.log(`Finding unused variables in "${chalk.cyan.bold(dir)}"...`);
console.log(`Unused variables in "${chalk.cyan.bold(dir)}"`);
console.log(`${chalk.cyan.bold(unusedVars.total)} total variables.`);

if (unusedVars.unused.length > 0) {
console.log(`${chalk.yellowBright.bold(unusedVars.unused.length)} are not used!`);
for (const unusedVar of unusedVars.unused) {
console.log(`Variable ${chalk.red(unusedVar)} is not being used!`);
}
console.table(unusedVars.unused, ['name', 'file', 'line']);
} else {
console.log(chalk.greenBright(`No unused variables found in "${dir}!`));
}
Expand Down
10 changes: 5 additions & 5 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,21 +50,21 @@ function makeResults(sassFilesAsStrings) {

const parseFileAsync = async(file, options) => {
const sassFileString = await fs.promises.readFile(file, 'utf8');
return parseData(sassFileString, options);
return parseData(file, sassFileString, options);
};

const parseFileSync = (file, options) => {
const sassFileString = fs.readFileSync(file, 'utf8');
return parseData(sassFileString, options);
return parseData(file, sassFileString, options);
};

const parseData = (sassFileString, options) => {
const parseData = (fileName, sassFileString, options) => {
// Remove jekyll comments
if (sassFileString.includes('---')) {
sassFileString = sassFileString.replace(/---/g, '');
}

const variables = parse(sassFileString, options.ignore);
const variables = parse(fileName, sassFileString, options.ignore);

return {
sassFileString,
Expand All @@ -75,7 +75,7 @@ const parseData = (sassFileString, options) => {
const filterVariables = (sassFilesString, variables) => {
// Store unused vars from all files and loop through each variable
const unusedVars = variables.filter(variable => {
const re = new RegExp(`(${escapeRegex(variable)})\\b(?!-)`, 'g');
const re = new RegExp(`(${escapeRegex(variable.name)})\\b(?!-)`, 'g');

return sassFilesString.match(re).length === 1;
});
Expand Down
12 changes: 10 additions & 2 deletions lib/parse-variable.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,15 @@ const { parse: scssParse } = require('postcss-scss');
const Declaration = require('postcss/lib/declaration');
const Comment = require('postcss/lib/comment');

let file = '';
let fusvEnabled = true;

const UnusedInfo = function(node) {
this.name = node.prop;
this.line = node.source.start.line;
this.file = file;
};

const parseNodes = (nodes, variables, ignoreList) => {
for (const node of nodes) {
findVars(node, variables, ignoreList);
Expand All @@ -20,7 +27,7 @@ const findVars = (node, result, ignoreList) => {
}

if (node instanceof Declaration && node.prop.startsWith('$') && !ignoreList.includes(node.prop) && fusvEnabled) {
result.push(node.prop);
result.push(new UnusedInfo(node));

return;
}
Expand All @@ -38,7 +45,8 @@ const parseComment = node => {
}
};

const parse = (scssString, ignoreList) => {
const parse = (fileName, scssString, ignoreList) => {
file = fileName;
const parsedScss = scssParse(scssString);
const variables = [];

Expand Down

0 comments on commit dafdee9

Please sign in to comment.