Implement statix Linter and Fixer (#3969)

* Add Statix for Linting

Add `statix check` as a linter. Provides a simple set of definition
tests additionally. Variable names specify "check" to allow for later
addition of `statix fix` as a formatter once stream support is added.

Signed-off-by: David Houston <houstdav000@gmail.com>

* Fixup Supported Tools List

I didn't realise there were two separate lists of tools, so add statix
to the other list. Also, remembered "S" comes after "R", and so
re-ordered it.

Signed-off-by: David Houston <houstdav000@gmail.com>

* Fix statix Test File

I refactored the variables for statix to allow for writing a fixer
later, and forgot to update them in the test, so update them now. Also
remove a stray "i", add missing space before checks

Signed-off-by: David Houston <houstdav000@gmail.com>

* Update Output Stream for v0.4.0

statix v0.4.0 provides a breaking change of output stream from stderr to
stdout.

Signed-off-by: David Houston <houstdav000@gmail.com>

* Add statix fix Fixer

Implement statix fix as a fixer for simple Nix antipatterns.

Signed-off-by: David Houston <houstdav000@gmail.com>

* Fix statix Fixer Tests

Fix the statix fixer tests by removing the unnecessary
'read_temporary_file' value from the command, since it simply uses the
default value.

Signed-off-by: David Houston <houstdav000@gmail.com>

* Add statix Handler Test

Add a test for the statix handler per @hsanson's request.

Signed-off-by: David Houston <houstdav000@gmail.com>

* Fix to run only on stdin for linting

Signed-off-by: David Houston <houstdav000@gmail.com>
This commit is contained in:
David Houston
2021-11-11 17:34:25 -05:00
committed by GitHub
parent 8b3b16d71c
commit a9d7f45924
11 changed files with 165 additions and 8 deletions

View File

@@ -7,24 +7,24 @@ nixfmt *ale-nix-nixfmt*
g:ale_nix_nixfmt_executable *g:ale_nix_nixfmt_executable*
*b:ale_nix_nixfmt_executable*
Type: String
Default: 'nixfmt'
Type: |String|
Default: `'nixfmt'`
This variable sets the executable used for nixfmt.
g:ale_nix_nixfmt_options *g:ale_nix_nixfmt_options*
*b:ale_nix_nixfmt_options*
Type: String
Default: ''
Type: |String|
Default: `''`
This variable can be set to pass additional options to the nixfmt fixer.
===============================================================================
nixpkgs-fmt *ale-nix-nixpkgs-fmt*
nixpkgs-fmt *ale-nix-nixpkgs-fmt*
g:ale_nix_nixpkgsfmt_executable *g:ale_nix_nixpkgsfmt_executable*
*b:ale_nix_nixpkgsfmt_executable*
g:ale_nix_nixpkgsfmt_executable *g:ale_nix_nixpkgsfmt_executable*
*b:ale_nix_nixpkgsfmt_executable*
Type: |String|
Default: `'nixpkgs-fmt'`
@@ -35,7 +35,44 @@ g:ale_nix_nixpkgsfmt_options *g:ale_nix_nixpkgsfmt_options*
Type: |String|
Default: `''`
This variable can be set to pass additional options to the nixpkgs-fmt fixer.
This variable can be set to pass additional options to the nixpkgs-fmt
fixer.
===============================================================================
statix *ale-nix-statix*
g:ale_nix_statix_check_executable *g:ale_nix_statix_check_executable*
*b:ale_nix_statix_check_executable*
Type: |String|
Default: `'statix'`
This variable sets the executable used for statix when running it as a
linter.
g:ale_nix_statix_check_options *g:ale_nix_statix_check_options*
*b:ale_nix_statix_check_options*
Type: |String|
Default: `''`
This variable can be used to pass additional options to statix when running
it as a linter.
g:ale_nix_statix_fix_executable *g:ale_nix_fix_check_executable*
*b:ale_nix_fix_check_executable*
Type: |String|
Default: `'statix'`
This variable sets the executable used for statix when running it as a
fixer.
g:ale_nix_statix_fix_options *g:ale_nix_statix_fix_options*
*b:ale_nix_statix_fix_options*
Type: |String|
Default: `''`
This variable can be used to pass additional options to statix when running
it as a fixer.
===============================================================================

View File

@@ -340,6 +340,7 @@ Notes:
* `nixfmt`
* `nixpkgs-fmt`
* `rnix-lsp`
* `statix`
* nroff
* `alex`!!
* `proselint`

View File

@@ -2879,6 +2879,7 @@ documented in additional help files.
nix.....................................|ale-nix-options|
nixfmt................................|ale-nix-nixfmt|
nixpkgs-fmt...........................|ale-nix-nixpkgs-fmt|
statix................................|ale-nix-statix|
nroff...................................|ale-nroff-options|
write-good............................|ale-nroff-write-good|
objc....................................|ale-objc-options|