UNPKG

sonar-web-frontend-reporters

Version:

sreporter is a Command-Line Interface to generate Front-End linters reporters for the SonarQube plugin

66 lines (52 loc) 1.6 kB
const glob = require('glob-all'), sasslint = require('sass-lint'), ReporterType = require('../reporter.enum'), Reporter = require('../reporter'), sassTranslator = require('./sassTranslator'); module.exports = class SASSLintReporter extends Reporter { constructor (options, projectName) { super(options, projectName); this.linterName = 'SASS TO SCSSLint'; } static defaultOptions () { return { src : 'src/**/*.scss', report : 'reports/sonar/scsslint.json', rulesFile: '.sass-lint.yml' }; } launch (done) { glob(this.options.src, (er, files) => { this.processFiles(files, this.options); this.closeReporter(this.options.report); if (typeof done === 'function') { done(); } }); } processFiles (fileArray, options) { this.openReporter(); fileArray.forEach((file) => { this.processFile(file, options); }); } processFile (file, options) { let result = sasslint.lintFiles(file, {}, options.rulesFile)[0], severity; this.openFileIssues(file, /^(\s+)?\/\*.*\*\//gm, /^(\s+)?\n$/gm); for (let message of result.messages) { switch (message.severity) { case 2: severity = this.MAJOR; break; case 1: severity = this.MINOR; break; default: severity = this.INFO; break; } this.addIssue((message.line ? message.line : null), message.message, message.message, sassTranslator[message.ruleId] || message.ruleId, severity, ReporterType.SASSLINT); } } };