Configuration¶
Configuration File¶
NEAL allows you to put all the configuration for your project in one place by using a configuration file, neal.json. The options available for the configuration file are:
Flag | Value |
---|---|
rules | A list of paths to NEAL files |
glob | A list of strings containing regular expressions that will match the files that should be analysed by NEAL |
exclude | A list of strings containing regular expressions that will match the files that should be ignored by NEAL |
provider-map | A object where the keys are the names of the providers and the values is like glob, matching files that should be handled by that provider |
rule-map | A list of objects containing rules, glob and exclude. It allows for multiple configurations in a single file. Each file to be analysed will be tested against each glob of each entry. The rules of the first entry to have a matching glob will be used. |
Example Configuration files¶
Basic¶
Only specify the set of rules used in your project and some files to ignore:
{
"rules": [
"./neal/Python.rules",
"./neal/Swift.rules",
"./neal/directory/with/many/rules"
],
"exclude": [
"./vendor"
]
}
Complete¶
Using rule-map and provider-map:
{
"provider-map": {
"Python": [ "BUCK$" ]
},
"rule-map": [{
"glob": [ "folder/with/libraries" ],
"rules": [ "./neal/Libraries.rules" ],
"ignores": [ "folder/with/libraries/vendor/*.py" ]
}, {
"glob": [ "./app", "./framework" ],
"rules": [ "./neal/App.rules" ]
}, {
"rules": [ "./neal/Default.rules" ]
}]
}
Disabling rules inline¶
You can use comments to disable NEAL rules. The comments must have the prefix NEAL:
and can specify the rules to be disabled (or all the rules), the context (the whole file or a given line) and must provide an explanation.
Examples¶
- Disabling a specific set of rules for a given line
// NEAL: skip RuleA, RuleB and RuleC on the next line because it will be fixed in #123
TriggerRuleA(); TriggerRuleB(); TriggerRuleC();
TriggerRuleA(); TriggerRuleC(); // NEAL: skip RuleA and RuleC on this line because it will be fixed in #412
TriggerRuleB();
// NEAL: skip RuleB on the previous line because it will be fixed on #705
- Disabling all rules for a given line: (all of the following are equivalent)
// NEAL: skip all rules on the next line because it will be fixed on #123
lint_error(); // NEAL: skip all rules on this line because it will be fixed on #123
// NEAL: skip all rules on the previous line line because it will be fixed on #123
- Disabling a set of rules for a given file
// NEAL: skip RuleA, RuleB and RuleC on this file because this file is auto generated.
- Disabling all rules for a given file
// NEAL: skip all rules on this file because this file is auto generated.
Runtime flags¶
To enable any of the following flags just set the environment variable with the name of the flag preceded by NEAL_
on your process or when you run NEAL, e.g.
$ NEAL_STATS=1 neal test
Flag | Description |
---|---|
DEBUG | Turn on debug logs (e.g. AST traversal logs, provider selection, etc.) |
STATS | Output statistics for the run once it finishes (e.g. Number of files parsed, number of parsing failures, etc.) |
PARSING_FAILURES | Print all the path of all the files that failed to parse |