vitorsalgado/nodejs-fx

View on GitHub
scritps/linters/sonar.js

Summary

Maintainability
A
0 mins
Test Coverage
#!/usr/bin/env node

/* eslint-disable no-console */
/* eslint-disable fp/no-unused-expression */

'use strict'

const Sonar = require('sonarjs')
const Path = require('path')
const { check } = require('../../')

const sources = Path.resolve('src')

const runSonarJS = () =>
  Sonar.analyze(sources, { onStart, onEnd })
    .then(issues =>
      check(issues)
        .on(noIssues, () => process.exit(0))
        .otherwise(() => logAndExit(issues)))

const noIssues = x => x.length === 0

const onStart = () => console.log('Analysis started')

const onEnd = () => console.log('Analysis finished\n')

const formatMsg = issue =>
  `${lineDelimiter()}\n
Severity: ${issue.severity}
Title: ${issue.title}
Action: ${issue.message}
File: ${issue.file}
Line: ${issue.pos.line}
Column: ${issue.pos.column}\n`

const lineDelimiter = () => Array(100).map(x => '-').join()

const logAndExit = issues => {
  console.log(`Found issue(s): ${issues.length}\n${issues.map(formatMsg)}`)
  return process.exit(1)
}

runSonarJS()