Skip to content

Commit

Permalink
fix: jsdoc initial rules
Browse files Browse the repository at this point in the history
  • Loading branch information
Joel Worrall committed Aug 27, 2020
1 parent 93a70a1 commit d200c51
Show file tree
Hide file tree
Showing 8 changed files with 176 additions and 17 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ tmp/
.idea/
vendor/
.bundle
out
21 changes: 12 additions & 9 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ const Axioms = require('./axioms/axioms')
/**
* @typedef {object} Formatter
*
* @property {(output: LintResult, dryRun: boolean) => string} formatOutput A function to format the entire linter output
* @property {func} formatOutput A function to format the entire linter output
*/

/**
Expand Down Expand Up @@ -79,8 +79,13 @@ module.exports.resultFormatter = exports.defaultFormatter
/**
* @typedef {object} LintResult
*
* @property {{ targetDir: string, filterPaths: string[], rulesetPath?: string, ruleset: object }} params
* @property {Object} params
* The parameters to the lint function call, including the found/supplied ruleset object.
* @property {string} params.targetDir
* @property {string[]} params.filterPaths
* @property {string} [params.rulesetPath]
* @property {Object} params.ruleset
*
* @property {boolean} passed Whether or not all lint rules and fix rules succeeded. Will be false if an error occurred during linting.
* @property {boolean} errored Whether or not an error occurred during the linting process (ex. the configuration failed validation).
* @property {string} [errMsg] A string indication error information, will be present if errored is true.
Expand Down Expand Up @@ -209,7 +214,7 @@ async function lint (targetDir, filterPaths = [], dryRun = false, ruleset = null
* is for rules. This function is split in three to allow NCC to
* statically determine the modules to resolve.
*
* @returns {Promise<Object.<string, () => any>>}
* @return {Promise<Object>}
* An object containing JS file names associated with their appropriate require function
*/
async function loadRules () {
Expand All @@ -229,7 +234,7 @@ async function loadRules () {
* is for fixes. This function is split in three to allow NCC to
* statically determine the modules to resolve.
*
* @returns {Promise<Object.<string, () => any>>}
* @returns {Promise<Object>}
* An object containing JS file names associated with their appropriate require function
*/
async function loadFixes () {
Expand All @@ -249,7 +254,7 @@ async function loadFixes () {
* is for Axioms. This function is split in three to allow NCC to
* statically determine the modules to resolve.
*
* @returns {Promise<Object.<string, () => any>>}
* @returns {Promise}
* An object containing JS file names associated with their appropriate require function
*/
async function loadAxioms () {
Expand Down Expand Up @@ -298,7 +303,6 @@ async function runRuleset (ruleset, targets, fileSystem, dryRun) {
let result
try {
// load the rule
/** @type {(fs: FileSystem, options: object) => Promise<Result> | Result} */
const ruleFunc = allRules[r.ruleType]()
// run the rule!
result = await ruleFunc(fileSystem, r.ruleConfig)
Expand All @@ -314,7 +318,6 @@ async function runRuleset (ruleset, targets, fileSystem, dryRun) {
if (!Object.prototype.hasOwnProperty.call(allFixes, r.fixType)) { return FormatResult.CreateError(r, `${r.fixType} is not a valid fix`) }
let fixresult
try {
/** @type {(fs: FileSystem, options: object, targets: string[], dryRun: boolean) => Promise<Result> | Result} */
const fixFunc = allFixes[r.fixType]()
fixresult = await fixFunc(fileSystem, r.fixConfig, fixTargets, dryRun)
} catch (e) {
Expand All @@ -333,7 +336,7 @@ async function runRuleset (ruleset, targets, fileSystem, dryRun) {
*
* @param {object} axiomconfig A configuration conforming to the "axioms" section in schema.json
* @param {FileSystem} fs The filesystem to run axioms against
* @returns {Promise<Object.<string, Result>>} An object representing axiom name: axiom results. The array will be null if the axiom could not run.
* @returns {Promise<Result[]>} An object representing axiom name: axiom results. The array will be null if the axiom could not run.
*/
async function determineTargets (axiomconfig, fs) {
// load axioms
Expand All @@ -353,7 +356,7 @@ async function determineTargets (axiomconfig, fs) {
* Validate a repolint configuration against a known JSON schema
*
* @param {object} config The configuration to validate
* @returns {Promise<{ passed: boolean, error?: string }>} Whether or not the config validation succeeded
* @returns {Promise<Rules[]>} Whether or not the config validation succeeded
*/
async function validateConfig (config) {
// compile the json schema
Expand Down
6 changes: 3 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
"chai-string": "^1.5.0",
"command-exists": "^1.2.9",
"eslint": "^7.7.0",
"eslint-plugin-jsdoc": "^30.2.4",
"eslint-plugin-jsdoc": "^30.3.0",
"markdown-toc": "^1.2.0",
"markdownlint": "^0.20.4",
"mocha": "^8.1.1",
Expand Down
24 changes: 23 additions & 1 deletion rules/file-contents.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,29 @@
// eslint-disable-next-line no-unused-vars
const Result = require('../lib/result')
// eslint-disable-next-line no-unused-vars
const FileSystem = require('../lib/file_system')
const FileSystem = require/**
* cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc
* cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
* cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc
* cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
* cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc
* cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
* cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc
* cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
* cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc
* cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
* cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc
* cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
* cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc
* cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
* cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc
* cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
* cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc
* cccccccccccccccccccccccccc * @param options
* cccccccccccccccccccccccccc cccccccccccccccccccccccccc
* @param options
*/
('../lib/file_system')

function getContent (options) {
return options['human-readable-content'] !== undefined ? options['human-readable-content'] : options.content
Expand Down
67 changes: 66 additions & 1 deletion rules/git-grep-commits.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,53 @@
const spawnSync = require('child_process').spawnSync
const Result = require('../lib/result')
// eslint-disable-next-line no-unused-vars
const FileSystem = require('../lib/file_system')
const FileSystem = require/**
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc *
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param fileSystem
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc * @param options
cccccccccccccccccccccccccc * cccccccccccccccccccccccccc cccccccccccccccccccccccccc
cccccccccccccccccccccccccc * @param fileSystem
cccccccccccccccccccccccccc * @param options
cccccccccccccccccccccccccc * @param fileSystem
cccccccccccccccccccccccccc * @param options
cccccccccccccccccccccccccc */
('../lib/file_system')

function listCommitsWithLines (fileSystem, options) {
const pattern = '(' + options.denylist.join('|') + ')'
Expand All @@ -18,16 +64,31 @@ function listCommitsWithLines (fileSystem, options) {
}).filter(commit => commit.lines.length > 0)
}

/**
* @param targetDir
*/
function gitAllCommits (targetDir) {
const args = ['-C', targetDir, 'rev-list', '--all']
return spawnSync('git', args).stdout.toString().trim().split('\n')
}

/**
* @param targetDir
* @param pattern
* @param ignoreCase
* @param commit
*/
function gitGrep (targetDir, pattern, ignoreCase, commit) {
const args = ['-C', targetDir, 'grep', '-E', ignoreCase ? '-i' : '', pattern, commit]
return spawnSync('git', args).stdout.toString().split('\n').filter(x => !!x)
}

/**
* @param targetDir
* @param pattern
* @param ignoreCase
* @param commit
*/
function gitLinesAtCommit (targetDir, pattern, ignoreCase, commit) {
const lines = gitGrep(targetDir, pattern, ignoreCase, commit)
.map((entry) => {
Expand All @@ -38,6 +99,10 @@ function gitLinesAtCommit (targetDir, pattern, ignoreCase, commit) {
return lines
}

/**
* @param fileSystem
* @param options
*/
function listFiles (fileSystem, options) {
const files = []

Expand Down
Loading

0 comments on commit d200c51

Please sign in to comment.