- Install Whine with
npm install whine - Create a config file with
echo "rulePackages: [whine-core]" > ./whine.yaml - Run Whine with
npx whine - Install VSCode extension VSIX from the release page
In whine.yaml every rule can be configured, with configuration options
depending on the rule.
Besides rule-specific configuration, every rule may have include and exclude
fields specifying globs for included and excluded files respectively. If
include is not present, all files are included. If exclude is not present,
no files are excluded.
Top level may also specify include and exclude for globally including or
excluding files respectively. If include is not present, it defaults to
src/**/*.purs. If exclude is not present, it's considered empty.
For example:
rulePackages:
- whine-core
- elmish-whine: 1.2.3 # Rule packages may specify an exact version
- halogen-whine: ">=1.0.0 <2.0.0" # Or a range of versions
- my-home-rules:
local: ./whine-rules # Rule packages may come from the local file system
module: My.Home.WhineRules # The module must export a value `rules :: RuleFactories`
exclude:
- src/LegacyCode/**/*.purs
- src/One/Specific/Module.purs
rules:
UndesirableModules:
modules:
Unsafe.Coerce: Do not use unsafe coercions
Data.List.Lazy: Do not use lazy lists, use Data.List instead
CommaFirstArrays:
exclude:
- src/Another/Specific/Module.pursRules can be disabled a la carte via directives in the code.
A disable directive appended to a code line will disable just the one
violation of the rule that starts on that line.
A disable directive appearing alone on its own line starts a span where the
rule is disabled. The span can be optionally closed with an enable directive.
If not closed, the span ends at the end of the file.
For example:
module MyModule where
import Prelude
import Unsafe.Coerce (unsafeCoerce) -- #disable UndesirableModules
import Data.Array (length)
function :: Array Int -> Int
function = length
-- #disable CommaFirstArrays
lengthOfThisArray = function [
1,
2,
3
]
-- #enable CommaFirstArrays
lengthOfAnotherOne = function
[ 1, 2, 3
, 4
, 5
]