npm-groovy-lint
Advanced tools
Comparing version 11.1.1 to 11.1.2-beta202310250645.0
@@ -5,2 +5,3 @@ // Call CodeNarc by server or java | ||
const debug = require("debug")("npm-groovy-lint"); | ||
const trace = require("debug")("npm-groovy-lint-trace"); | ||
const { JavaCaller } = require("java-caller"); | ||
@@ -12,2 +13,6 @@ const optionsDefinition = require("./options"); | ||
// Request over IPv4 because Java typically prefers it. | ||
const http = require("http"); | ||
axios.defaults.httpAgent = new http.Agent({ family: 4, keepAlive: true }); | ||
class CodeNarcCaller { | ||
@@ -90,3 +95,3 @@ "use strict"; | ||
}; | ||
debug(`CALL CodeNarcServer with ${JSON.stringify(axiosConfig, null, 2)}`); | ||
trace(`CALL CodeNarcServer with ${JSON.stringify(axiosConfig, null, 2)}`); | ||
let response; | ||
@@ -98,5 +103,6 @@ try { | ||
const elapsed = parseInt(performance.now() - startCodeNarc, 10); | ||
debug(`CodeNarcServer call result: (${response.status}) ${elapsed}ms ${JSON.stringify(response.data || {})}`); | ||
debug(`CodeNarcServer call result: (${response.status}) ${elapsed}ms`); | ||
} catch (e) { | ||
// If server not started , start it and try again | ||
debug(`callCodeNarcServer code: ${e.code} error: ${e.message}`); | ||
if ( | ||
@@ -185,3 +191,3 @@ (startServerTried === false, | ||
// Start progress bar | ||
debug(`CALL CodeNarcJava with ${scriptArgs.join(" ")}`); | ||
trace(`CALL CodeNarcJava with ${scriptArgs.join(" ")}`); | ||
this.bar = new cliProgress.SingleBar( | ||
@@ -216,3 +222,3 @@ { | ||
// If failure (missing class com.nvuillam.CodeNarcServer for example, it can happen on Linux, let's try the original org.codenarc.CodeNarc class) | ||
debug(`Error calling CodeNarcServer via java: ${JSON.stringify(javaResult)}`); | ||
trace(`Error calling CodeNarcServer via java: ${JSON.stringify(javaResult)}`); | ||
return await this.callCodeNarcJava(true); | ||
@@ -281,2 +287,5 @@ } else { | ||
// Store the process so we can stop it later. | ||
this.codeNarcProcess = javaCallRes.childJavaProcess; | ||
// Poll it until it is ready | ||
@@ -288,2 +297,7 @@ const start = performance.now(); | ||
interval = setInterval(() => { | ||
debug( | ||
`pinging CodeNarcServer at ${serverPingUri} notified: ${notified}, serverStatus: ${ | ||
this.serverStatus | ||
}, since: ${performance.now() - start}, maxAttemptTimeMs: ${maxAttemptTimeMs}` | ||
); | ||
axios | ||
@@ -302,14 +316,18 @@ .get(serverPingUri) | ||
} else if (notified === false && this.serverStatus === "unknown" && performance.now() - start > maxAttemptTimeMs) { | ||
// Timeout has been reached. | ||
let since = performance.now() - start; | ||
debug(`Ping timeout after ${since}ms status: ${response.status}`); | ||
this.declareServerError({ message: `Timeout after ${since}ms} status: ${response.status}` }, interval); | ||
resolve(); | ||
} | ||
}) | ||
.catch(e => { | ||
debug(`Ping code: ${e.code} message: ${e.message}`); | ||
let since = performance.now() - start; | ||
if (notified === false && this.serverStatus === "unknown" && since > maxAttemptTimeMs) { | ||
// Timeout has been reached | ||
this.declareServerError( | ||
{ | ||
message: "Timeout after " + maxAttemptTimeMs + "\nResponse: " + JSON.stringify(response.toJSON()) | ||
}, | ||
interval | ||
); | ||
debug(`Ping timeout after ${maxAttemptTimeMs}ms`); | ||
this.declareServerError({ message: `Timeout after ${since}ms error: ${e}` }, interval); | ||
resolve(); | ||
} | ||
}) | ||
.catch(() => { | ||
// Just do nothing | ||
}); | ||
@@ -327,4 +345,17 @@ }, 400); | ||
// Kill CodeNarc process if running. | ||
killCodeNarcProcess() { | ||
if (this.codeNarcProcess) { | ||
this.codeNarcProcess.kill("SIGKILL"); | ||
delete this.codeNarcProcess; | ||
return "CodeNarcServer killed"; | ||
} | ||
return ""; | ||
} | ||
// Stop polling and log error | ||
declareServerError(e, interval) { | ||
// Kill off the process as it is not responding. | ||
this.killCodeNarcProcess(); | ||
this.serverStatus = "error"; | ||
@@ -340,6 +371,12 @@ if (interval) { | ||
// Kill CodeNarc server by telling it to do so | ||
// Kill CodeNarc server. | ||
async killCodeNarcServer() { | ||
// Try by process first as it's more reliable. | ||
let outputString = this.killCodeNarcProcess(); | ||
if (outputString) { | ||
return outputString; | ||
} | ||
// Process kill wasn't possible, so try sending a kill http request. | ||
const serverUri = this.getCodeNarcServerUri() + "/kill"; | ||
let outputString = ""; | ||
try { | ||
@@ -353,6 +390,8 @@ const response = await axios.post(serverUri, { timeout: 5000 }); | ||
} catch (e) { | ||
if (e.stack.includes("connResetException")) { | ||
if (e.stack.includes("connResetException") || e.message.includes("socket hang up")) { | ||
outputString = "CodeNarcServer terminated"; | ||
} else { | ||
outputString = "CodeNarcServer was not running"; | ||
// This should be ECONNREFUSED. | ||
debug(`CodeNarcServer kill request failed: ${e}`); | ||
outputString = `CodeNarcServer was not running`; | ||
} | ||
@@ -359,0 +398,0 @@ } |
@@ -59,6 +59,8 @@ // Shared functions | ||
const baseBefore = (cnPath !== "." && cnPath.startsWith("/")) || cnPath.includes(":/") || cnPath.includes(":\\") ? "" : process.cwd() + "/"; | ||
const codeNarcBaseDir = positionalArgs.length > 0 ? | ||
(await getCodeNarcBaseDirFromFiles(positionalArgs)) : | ||
cnPath !== "." ? baseBefore + cnPath.replace(/^"(.*)"$/, "$1") : | ||
process.cwd(); | ||
const codeNarcBaseDir = | ||
positionalArgs.length > 0 | ||
? await getCodeNarcBaseDirFromFiles(positionalArgs) | ||
: cnPath !== "." | ||
? baseBefore + cnPath.replace(/^"(.*)"$/, "$1") | ||
: process.cwd(); | ||
result.codeNarcBaseDir = path.resolve(codeNarcBaseDir); | ||
@@ -148,6 +150,6 @@ result.codenarcArgs.push(`-basedir=${result.codeNarcBaseDir}`); | ||
: result.output.endsWith(".json") | ||
? "json" | ||
: result.output.endsWith(".sarif") | ||
? "sarif" | ||
: result.output; | ||
? "json" | ||
: result.output.endsWith(".sarif") | ||
? "sarif" | ||
: result.output; | ||
result.codenarcArgs.push(`-report=json:stdout`); | ||
@@ -161,7 +163,7 @@ } else if (["html", "xml"].includes(result.output.split(".").pop())) { | ||
: result.output | ||
.split(".") | ||
.pop() | ||
.endsWith("xml") | ||
? "xml" | ||
: ""; | ||
.split(".") | ||
.pop() | ||
.endsWith("xml") | ||
? "xml" | ||
: ""; | ||
const ext = result.output.split(".").pop(); | ||
@@ -189,5 +191,5 @@ result.codenarcArgs.push(`-report=${ext}:${result.output}`); | ||
if (!positionalArgs.every(fileOrDirOrPattern => fs.existsSync(fileOrDirOrPattern) || directoryExists(fileOrDirOrPattern))) { | ||
return process.cwd() | ||
return process.cwd(); | ||
} | ||
const folders = positionalArgs.map((fileOrDir) => { | ||
const folders = positionalArgs.map(fileOrDir => { | ||
// Dir | ||
@@ -202,3 +204,3 @@ if (directoryExists(fileOrDir)) { | ||
const baseDirFromFiles = commondir(folders); | ||
return baseDirFromFiles | ||
return baseDirFromFiles; | ||
} | ||
@@ -335,3 +337,3 @@ | ||
else if (errItem.line > 0) { | ||
const range = evaluateRangeFromLine(errItem, allLines); | ||
const range = evaluateRangeFromLine(errItem, allLines); | ||
if (range && range.start.character > -1) { | ||
@@ -428,4 +430,4 @@ errItem.range = range; | ||
: Object.keys(ruleOptions).length > 0 | ||
? ruleOptions | ||
: ruleFromConfig; | ||
? ruleOptions | ||
: ruleFromConfig; | ||
const ruleDef = buildCodeNarcRule(ruleName, mergedRuleConfig); | ||
@@ -451,4 +453,4 @@ // If rule has been sent as argument, enable it by default | ||
: Object.keys(ruleFromRuleSetsArg).length > 0 | ||
? ruleFromRuleSetsArg | ||
: ruleDef; | ||
? ruleFromRuleSetsArg | ||
: ruleDef; | ||
} | ||
@@ -455,0 +457,0 @@ // Add in the list of rules to test , except if it is disabled |
@@ -5,2 +5,3 @@ // Imports | ||
const debug = require("debug")("npm-groovy-lint"); | ||
const trace = require("debug")("npm-groovy-lint-trace"); | ||
const os = require("os"); | ||
@@ -139,3 +140,3 @@ const { getNpmGroovyLintRules, getFormattingRulesToAlwaysRun } = require("./groovy-lint-rules.js"); | ||
} | ||
debug(`Parsed fixable errors: ${JSON.stringify(this.fixableErrors)}`); | ||
trace(`Parsed fixable errors: ${JSON.stringify(this.fixableErrors)}`); | ||
} | ||
@@ -261,3 +262,3 @@ | ||
} else { | ||
debug("GroovyLint: missing replacement variable(s):\n" + strBefore + "\n" + strAfter + "\n" + JSON.stringify(fixableError)); | ||
trace(`GroovyLint: missing replacement variable(s):\n${strBefore}\n${strAfter}\n${JSON.stringify(fixableError)}`); | ||
} | ||
@@ -273,3 +274,3 @@ } | ||
} catch (e) { | ||
debug("ERROR: Fix function error: " + e.message + " / " + JSON.stringify(fixableError)); | ||
trace(`ERROR: Fix function error: ${e.message} / ${JSON.stringify(fixableError)}`); | ||
throw e; | ||
@@ -276,0 +277,0 @@ } |
// Imports | ||
const debug = require("debug")("npm-groovy-lint"); | ||
const trace = require("debug")("npm-groovy-lint-trace"); | ||
const fs = require("fs-extra"); | ||
@@ -142,4 +143,4 @@ const os = require("os"); | ||
// Try to catch input from stdin. if found, use it as groovy source | ||
if (this.options._ && this.options._[0] === '-') { | ||
const stdInData = fs.readFileSync(0, 'utf-8'); | ||
if (this.options._ && this.options._[0] === "-") { | ||
const stdInData = fs.readFileSync(0, "utf-8"); | ||
this.options.source = stdInData; | ||
@@ -149,6 +150,5 @@ this.options._ = []; | ||
if (this.options.format || this.options.fix) { | ||
this.options.output = 'stdout'; | ||
this.options.output = "stdout"; | ||
} | ||
} | ||
} catch (err) { | ||
@@ -236,3 +236,3 @@ this.status = 2; | ||
- Call CodeNarc java using com.nvuillam.CodeNarcServer (without launching server) | ||
- Call CodeNarc java using org.codenarc.CodeNarc | ||
- Call CodeNarc java using org.codenarc.CodeNarc | ||
*/ | ||
@@ -364,3 +364,3 @@ async callCodeNarc() { | ||
lintAgainOptions.output = "none"; | ||
debug(`Fix is done, lint again with options ${JSON.stringify(lintAgainOptions)}`); | ||
trace(`Fix is done, lint again with options ${JSON.stringify(lintAgainOptions)}`); | ||
const newLinter = new NpmGroovyLint(lintAgainOptions, { | ||
@@ -476,3 +476,3 @@ parseOptions: false, | ||
// There has been a fatal error before, so there are no results | ||
return ; | ||
return; | ||
} | ||
@@ -483,8 +483,8 @@ const failureLevel = | ||
: this.options.failonerror | ||
? "error" | ||
: this.options.failonwarning | ||
? "warning" | ||
: this.options.failoninfo | ||
? "info" | ||
: "none"; | ||
? "error" | ||
: this.options.failonwarning | ||
? "warning" | ||
: this.options.failoninfo | ||
? "info" | ||
: "none"; | ||
if (failureLevel === "none") { | ||
@@ -491,0 +491,0 @@ return; |
@@ -180,3 +180,3 @@ /** | ||
type: "String", | ||
default: "http://localhost", //"http://" + require("ip").address(), | ||
default: "http://localhost", | ||
description: "If use of CodeNarc server, host where is the CodeNarc server (default: localhost)" | ||
@@ -183,0 +183,0 @@ }, |
@@ -112,3 +112,3 @@ // Output management | ||
let fileOutputString = c.underline(fileNm) + "\n"; | ||
let showFileInOutput = false ; | ||
let showFileInOutput = false; | ||
for (const err of fileErrors) { | ||
@@ -118,3 +118,3 @@ if (!isErrorInLogLevelScope(err.severity, options.loglevel)) { | ||
} | ||
showFileInOutput = true ; | ||
showFileInOutput = true; | ||
let color = "grey"; | ||
@@ -155,3 +155,3 @@ switch (err.severity) { | ||
if (showFileInOutput || options.verbose) { | ||
outputString += fileOutputString ; | ||
outputString += fileOutputString; | ||
} | ||
@@ -158,0 +158,0 @@ } |
@@ -5,2 +5,3 @@ // Shared functions | ||
const debug = require("debug")("npm-groovy-lint"); | ||
const trace = require("debug")("npm-groovy-lint-trace"); | ||
const decodeHtml = require("decode-html"); | ||
@@ -128,3 +129,3 @@ const fse = require("fs-extra"); | ||
function evaluateRangeFromLine(errItem, allLines) { | ||
return getDefaultRange(allLines, errItem) | ||
return getDefaultRange(allLines, errItem); | ||
} | ||
@@ -147,4 +148,4 @@ | ||
: varDef.type && varDef.type === "array" | ||
? JSON.parse(value) | ||
: value; | ||
? JSON.parse(value) | ||
: value; | ||
evaluatedVars.push({ | ||
@@ -155,3 +156,3 @@ name: varDef.name, | ||
} else { | ||
debug("GroovyLint: Unable to match " + varDef.regex + " in " + msg); | ||
trace(`GroovyLint: Unable to match ${varDef.regex} in ${msg}`); | ||
} | ||
@@ -158,0 +159,0 @@ } |
{ | ||
"name": "npm-groovy-lint", | ||
"version": "11.1.1", | ||
"version": "11.1.2-beta202310250645.0", | ||
"description": "Lint, format and auto-fix your Groovy / Jenkinsfile / Gradle files", | ||
@@ -8,4 +8,4 @@ "main": "index.js", | ||
"lint:fix": "eslint **/*.js --fix && prettier --write \"./lib/**/*.{js,jsx}\" --tab-width 4 --print-width 150", | ||
"groovy:run-server-from-source": "npm run dev:kill-server && groovy -cp \"lib/java/CodeNarc-3.1.0.jar;lib/java/groovy/lib/groovy-3.0.9.jar;lib/java/groovy/lib/groovy-templates-3.0.9.jar;lib/java/groovy/lib/groovy-xml-3.0.9.jar;lib/java/groovy/lib/groovy-json-3.0.9.jar;lib/java/groovy/lib/groovy-ant-3.0.9.jar;lib/java/groovy/lib/ant-1.10.11.jar;lib/java/groovy/lib/ant-launcher-1.10.11.jar;lib/java/slf4j-api-1.7.9.jar;lib/java/log4j-slf4j-impl-2.18.0.jar;lib/java/log4j-api-2.18.0.jar;lib/java/log4j-core-2.18.0.jar;lib/java/GMetrics-2.1.0.jar\" groovy/src/main/com/nvuillam/CodeNarcServer.groovy --server", | ||
"groovy:build": "npm run dev:kill-server && groovyc -cp \"./lib/java*\" --encoding utf-8 ./groovy/src/main/com/nvuillam/CodeNarcServer.groovy -d ./tmp && cd ./tmp && jar -cvfm ./../lib/java/CodeNarcServer.jar ./../MANIFEST.txt ./com/nvuillam/*.class && cd ..", | ||
"groovy:run-server-from-source": "npm run dev:kill-server && groovy -cp \"lib/java/*\" groovy/src/main/com/nvuillam/CodeNarcServer.groovy --server", | ||
"groovy:build": "npm run dev:kill-server && groovyc -cp \"lib/java/*\" --encoding utf-8 ./groovy/src/main/com/nvuillam/CodeNarcServer.groovy -d ./tmp && cd ./tmp && jar -cvfm ./../lib/java/CodeNarcServer.jar ./../MANIFEST.txt ./com/nvuillam/*.class && cd ..", | ||
"test": "npm run dev:kill-server && mocha \"test/**/*.test.js\"", | ||
@@ -52,3 +52,3 @@ "test:coverage": "nyc npm run test", | ||
"chalk": "^4.1.2", | ||
"cli-progress": "^3.10.0", | ||
"cli-progress": "^3.12.0", | ||
"commondir": "^1.0.1", | ||
@@ -65,3 +65,3 @@ "debug": "^4.1.1", | ||
"js-yaml": "^4.1.0", | ||
"node-sarif-builder": "^2.0.1", | ||
"node-sarif-builder": "^2.0.3", | ||
"optionator": "^0.8.3", | ||
@@ -73,7 +73,7 @@ "semver": "^7.1.3", | ||
"devDependencies": { | ||
"@babel/core": "^7.16.0", | ||
"@babel/eslint-parser": "^7.16.3", | ||
"@babel/core": "^7.23.2", | ||
"@babel/eslint-parser": "^7.22.15", | ||
"diff": "^4.0.2", | ||
"eslint": "^8.2.0", | ||
"mocha": "^10.1.0", | ||
"eslint": "^8.52.0", | ||
"mocha": "^10.2.0", | ||
"nyc": "^15.1.0", | ||
@@ -85,3 +85,3 @@ "prettier": "^1.19.1", | ||
"engines": { | ||
"node": ">=12.0.0" | ||
"node": ">=18.0.0" | ||
}, | ||
@@ -88,0 +88,0 @@ "mocha": { |
@@ -19,3 +19,3 @@ <!-- markdownlint-disable MD013 MD033 MD034 --> | ||
_**New: The [article about the story of npm-groovy-lint](https://nicolas.vuillamy.fr/a-groovy-journey-to-open-source-during-covid-19-npm-groovy-lint-8d88c7eecebc), and why you should dive in open-source community !**_ | ||
***New: The [article about the story of npm-groovy-lint](https://nicolas.vuillamy.fr/a-groovy-journey-to-open-source-during-covid-19-npm-groovy-lint-8d88c7eecebc), and why you should dive in open-source community !*** | ||
@@ -27,3 +27,3 @@ Based on [CodeNarc](http://codenarc.github.io/CodeNarc/) , this out of the box package allows to **track groovy errors** and **correct a part of them** | ||
Easy to integrate in a CD/CI process (Jenkins Pipeline,CircleCI...) to lint your groovy or Jenkinsfile at each build :) | ||
Easy to integrate in a CI/CD process (Jenkins Pipeline,CircleCI...) to lint your groovy or Jenkinsfile at each build :) | ||
@@ -50,10 +50,10 @@ You can also use this package in : | ||
|-------------------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ||
| -o<br/> --output | String | Output format (txt,json,sarif,html,xml), or path to a file with one of these extensions<br/> Default: `txt`<br/> Examples:<br/> - `"txt"`<br/> - `"json"`<br/> - `"./logs/myLintResults.txt"`<br/> - `"./logs/myLintResults.sarif"`<br/> - `"./logs/myLintResults.html"`<br/> - `"./logs/myLintResults.xml"` | | ||
| -o<br/> --output | String | Output format (txt,json,sarif,html,xml), or path to a file with one of these extensions<br/> Default: `txt`<br/> Examples:<br/> - `"txt"`<br/> - `"json"`<br/> - `"./logs/myLintResults.txt"`<br/> - `"./logs/myLintResults.sarif"`<br/> - `"./logs/myLintResults.html"`<br/> - `"./logs/myLintResults.xml"`<br/>Note: HTML and XML are directly from CodeNarc so using these formats will disable many npm-groovy-lint features | | ||
| -l<br/> --loglevel | String | Log level (error,warning or info)<br/>Default: info | | ||
| --failon | String | Defines the error level where CLI will fail (return code = 1). error,warning,info or none. Each failure level includes the more critical ones. | | ||
| -c<br/> --config | String | Custom path to [GroovyLint config file](#Configuration), or preset config `recommended|recommended-jenkinsfile|all`<br/> Default: Browse current directory to find `.groovylintrc.json|js|yml|package.json` config file, or default npm-groovy-lint config if not defined.<br/>Note: command-line arguments have priority on config file properties | | ||
| -c<br/> --config | String | Custom path to [GroovyLint config file](#configuration), or preset config `recommended|recommended-jenkinsfile|all`<br/> Default: Browse current directory to find`.groovylintrc.json|js|yml|package.json` config file, or default npm-groovy-lint config if not defined.<br/>Note: command-line arguments have priority on config file properties | | ||
| --parse | Boolean | Try to compile the source code and return parse errors (since v5.7.0, default to true, use --no-parse to deactivate) | | ||
| --format | Boolean | Format source code | | ||
| --fix | Boolean | Automatically fix problems when possible<br/> See [Autofixable rules](#Autofixable-rules) | | ||
| -x<br/> --fixrules | String | Option for --fix argument: List of rule identifiers to fix (if not specified, all available fixes will be applied). See [Autofixable rules](#Autofixable-rules) <br/> Examples:<br/> - `"SpaceBeforeClosingBrace,SpaceAfterClosingBrace,UnusedImport"`<br/> - `"Indentation"`<br/> | | ||
| --fix | Boolean | Automatically fix problems when possible<br/> See [Auto-fixable rules](#auto-fixable-rules) | | ||
| -x<br/> --fixrules | String | Option for --fix argument: List of rule identifiers to fix (if not specified, all available fixes will be applied). See [Auto-fixable rules](#auto-fixable-rules) <br/> Examples:<br/> - `"SpaceBeforeClosingBrace,SpaceAfterClosingBrace,UnusedImport"`<br/> - `"Indentation"`<br/> | | ||
| --nolintafter | Boolean | When format or fix is called, a new lint is performed after the fixes to update the returned error list. If you just want the updated source code and do not care about the error logs, use this parameter to improve performances | | ||
@@ -143,2 +143,3 @@ | -r<br/> --rulesets | String | [RuleSet file(s)](http://codenarc.github.io/CodeNarc/codenarc-creating-ruleset.html) to use for linting, if you do not want to use recommended rules or .groovylintrc.js defined rules.<br/>If list of comma separated strings corresponding to CodeNarc rules, a RuleSet file will be dynamically generated </br> Examples:<br/> - `"./config/codenarc/RuleSet-Custom.groovy"`<br/> - `"./path/to/my/ruleset/files"`<br/>- `Indentation{"spacesPerIndentLevel":2,"severity":"warning"},UnnecessarySemicolon,UnnecessaryGString` | | ||
``` | ||
- If you have issues with v9, install previous version with `npm install -g npm-groovy-lint@8.2.0` | ||
@@ -159,5 +160,5 @@ - Node.js >= 12 is required to run this package. If you can't upgrade, you can use [nvm](https://github.com/nvm-sh/nvm) to have [different node versions on your computer](https://www.sitepoint.com/quick-tip-multiple-versions-node-nvm/) | ||
- Jenkinsfile | ||
- **.groovylintrc.json** _(do not forget the dot at the beginning of the file name)_ | ||
- **.groovylintrc.json** *(do not forget the dot at the beginning of the file name)* | ||
*If you are using [VsCode Groovy Lint extension](https://marketplace.visualstudio.com/items?itemName=NicolasVuillamy.vscode-groovy-lint), just use QuickFix* ***Ignore in all files*** _and it will generate groovylintrc.json file_ | ||
*If you are using [VsCode Groovy Lint extension](https://marketplace.visualstudio.com/items?itemName=NicolasVuillamy.vscode-groovy-lint), just use QuickFix **Ignore in all files** and it will generate groovylintrc.json file.* | ||
@@ -168,4 +169,4 @@ ### Format | ||
- **rules**: List of rules definition, following format `"RuleSection.RuleName": ruleParameters` or `"RuleName": ruleParameters` | ||
- _RuleName_: any of the **[CodeNarc rules](https://codenarc.github.io/CodeNarc/codenarc-rule-index.html)** | ||
- _ruleParameters_: can be just a severity override ( `"off"`, `"error"`, `"warning"`, `"info"` ) , or a property list : | ||
- *RuleName*: any of the **[CodeNarc rules](https://codenarc.github.io/CodeNarc/codenarc-rule-index.html)** | ||
- *ruleParameters*: can be just a severity override ( `"off"`, `"error"`, `"warning"`, `"info"` ) , or a property list : | ||
- severity : off,error,warning,info | ||
@@ -350,5 +351,5 @@ - enabled : true (default) or false | ||
[Contribute](#Contribute) to add more [rules](http://codenarc.github.io/CodeNarc/codenarc-rule-index.html) fixes :) | ||
[Contribute](#contribute) to add more [rules](http://codenarc.github.io/CodeNarc/codenarc-rule-index.html) fixes :) | ||
## CD/CI | ||
## CI/CD | ||
@@ -455,5 +456,5 @@ ### Mega-Linter | ||
[<img alt="nvuillam" src="https://avatars1.githubusercontent.com/u/17500430?v=4&s=50 width=50">](https://github.com/nvuillam) | [<img alt="Dave Gallant" src="https://avatars2.githubusercontent.com/u/4519234?v=4&s=50 width=50">](https://github.com/davegallant) | [<img alt="warhod" src="https://avatars1.githubusercontent.com/u/1305176?v=4&s=50 width=50">](https://github.com/warhod) | [<img alt="pawelkopka" src="https://avatars1.githubusercontent.com/u/17784034?v=4&s=50 width=50">](https://github.com/pawelkopka) | [<img alt="docwhat" src="https://avatars1.githubusercontent.com/u/40799?v=4&s=50 width=50">](https://github.com/docwhat) | [<img alt="CatSue" src="https://avatars3.githubusercontent.com/u/26134618?v=4&s=50 width=50">](https://github.com/CatSue) | ||
:----------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------: | ||
[Nicolas Vuillamy](https://github.com/nvuillam) | [Dave Gallant](https://github.com/davegallant) | [Howard Lo](https://github.com/warhod) | [Pawel Kopka](https://github.com/pawelkopka) | [docwhat](https://github.com/docwhat) | [CatSue](https://github.com/CatSue) | ||
| [<img alt="nvuillam" src="https://avatars1.githubusercontent.com/u/17500430?v=4&s=50 width=50">](https://github.com/nvuillam) | [<img alt="Dave Gallant" src="https://avatars2.githubusercontent.com/u/4519234?v=4&s=50 width=50">](https://github.com/davegallant) | [<img alt="warhod" src="https://avatars1.githubusercontent.com/u/1305176?v=4&s=50 width=50">](https://github.com/warhod) | [<img alt="pawelkopka" src="https://avatars1.githubusercontent.com/u/17784034?v=4&s=50 width=50">](https://github.com/pawelkopka) | [<img alt="docwhat" src="https://avatars1.githubusercontent.com/u/40799?v=4&s=50 width=50">](https://github.com/docwhat) | [<img alt="CatSue" src="https://avatars3.githubusercontent.com/u/26134618?v=4&s=50 width=50">](https://github.com/CatSue) | | ||
|:-----------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------:| | ||
| [Nicolas Vuillamy](https://github.com/nvuillam) | [Dave Gallant](https://github.com/davegallant) | [Howard Lo](https://github.com/warhod) | [Pawel Kopka](https://github.com/pawelkopka) | [docwhat](https://github.com/docwhat) | [CatSue](https://github.com/CatSue) | | ||
@@ -460,0 +461,0 @@ ## Release notes |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
7421
456
14821219
119
1
1
Updatedcli-progress@^3.12.0
Updatednode-sarif-builder@^2.0.3