Commit Graph

24 Commits

Author SHA1 Message Date
Olaf Alders 8a77290553 [WIP] Begin to distinguish between Perl warnings and errors (#933)
* If a Perl script compiles, there are only warnings and no errors

* Let the first Perl error or warning win.

Take the following example:

***

sub foo {
    my $thing;

***

This might have the following messages when we compile it:

Missing right curly or square bracket at warning.pl line 7, at end of
line
syntax error at warning.pl line 7, at EOF
warning.pl had compilation errors.

With the current behaviour, we just get a "syntax error" message, which
isn't all that helpful.  With this patch we get "Missing right curly or
square bracket".

* Fix variable scope and pattern matching syntax

* Use named variable to enhance clarity when matching Perl output

* Add more tests for Perl linter

* Remove unnecessary parens

* Simplify check for pattern match
2018-03-02 21:04:52 +00:00
w0rp 2f9869de44 Escape the perl executable, and cover the callbacks with tests 2017-12-02 20:47:01 +00:00
w0rp acd1260339 Revert "Fix #1186 - Use -w by default for Perl, which does not execute code"
This reverts commit f5fc746d00.
2017-12-02 20:38:28 +00:00
w0rp f5fc746d00 Fix #1186 - Use -w by default for Perl, which does not execute code 2017-12-02 12:26:44 +00:00
Eddie Lebow 4d44996af6 perlcritic: all issues are warnings
Perlcritic is a style checker, not a syntax validator.

This change was originally proposed by @RsrchBoy in
https://github.com/w0rp/ale/pull/784.
2017-11-11 17:46:21 -05:00
w0rp d5ae3201a4 Ban !=# and !=? from the codebase 2017-08-11 00:31:42 +01:00
w0rp a535d07f28 Ban use of ==# or ==? in the codebase, and prefer is# or is? instead 2017-08-08 08:39:13 +01:00
Chris Weyl 3f1cab3e7e Add profile, other options to the perlcritic linter (#675)
* Add profile, other options to the perlcritic linter
2017-06-29 13:08:51 +01:00
w0rp 1917e9157c Fix #694 - Ignore BEGIN failed errors for Perl only for certain errors 2017-06-25 21:49:57 +01:00
w0rp ce2bfa88eb Fix #676 - Fix handling of Perl errors 2017-06-22 12:37:08 +01:00
Steven Humphrey 99263bdda4 Perlcritic column number and rule names (#640)
* Add column number to perlcritic linting output

This returns the column number of the perlcritic error so that ale can
show the column in addition to the line where perlcritic found an error.

* Add perlcritic configuration for rule names

This adds a configuration setting so that the name of the perlcritic
rule is shown [Rule::Name] after the error message.

This is useful to lookup the rule failure.

* Add a vader test for perlcritic#GetCommand
2017-06-11 21:13:47 +01:00
w0rp eeea72e167 Fix #625 Ignore Perl errors from other files 2017-06-06 20:40:07 +01:00
Olaf Alders fa02b1d259 Remove -X flag from perl defaults.
"-X Disables all warnings regardless of use warnings or $^W".  See
"perldoc perlrun" or http://perldoc.perl.org/perlrun.html

With the current defaults, warnings are squashed.  For example:

$ perl -X -Mwarnings -c -e'BEGIN { 42 + undef }'
-e syntax OK

$ perl -Mwarnings -c -e'BEGIN { 42 + undef }'
Use of uninitialized value in addition (+) at -e line 1.
-e syntax OK

So, it's not clear from the current defaults whether Ale wants to remove
warnings or enable them.  As it stands, it's trying to do both and the
disabling appears to win.

This commit enables warnings by default.
2017-05-30 16:07:21 -04:00
w0rp bdad25eefd Add a function for getting matches, and use it to simplify a lot of code 2017-04-18 00:35:53 +01:00
w0rp e97dada261 #427 Implement buffer variable overrides for all linter options 2017-04-16 01:24:08 +01:00
Adriaan Zonnenberg 4b0f3257dd Remove 'col' from linters where it is hardcoded to 1 (#434)
* Remove 'col' from linters where it is hardcoded to 1

When 'col' is 1, the first column will get highlighted for no reason. It
should be 0 (which is the default).

In the scalac linter there was also a check about the outcome of
`stridx`. It would set l:col to 0 if it was -1, and then it uses
`'col': l:col + 1` to convert the outcome of `stridx` to the actual
column number. This will make 'col' equals 1 when there is no match. We
can remove the check because `-1 + 1 = 0`.

* Remove outdated comments about vcol

vcol was added as a default, and the loclists that follow these comments
do not contain 'vcol' anymore
2017-03-30 23:33:38 +01:00
Paul Johnson c2ceb9e085 FIX #344 - Add options to Perl linter
Conflicts:
	doc/ale.txt
2017-03-11 14:53:30 +00:00
w0rp b2fe1b2567 Copy all loclist items returned from handlers, and set up defaults for convenience 2017-02-26 14:51:22 +00:00
w0rp d7ed49f849 Add a script for custom checks to enforce using the abort flag for functions and trailing whitespace, and fix existing issues. 2017-01-22 14:54:57 +00:00
Ian Good c97ad01bcb Fix typo in perlcritic linter dictionary
The linter validation logic was checking for `stdout`, `stderr`, or
`both`, resulting in an exception being thrown when loading the
perlcritic linter.
2017-01-03 14:55:23 -05:00
Bjorn Neergaard f49f615ef6
Add support for dot-seperate linters, improve linter tests
This PR first and formost implements support for dot-seperate filetypes,
a very trivial change.

This closes #132

But more importantly, this PR vastly improves the test quality for
`ale#linter#Get`. It enables us to reset the state of ale's internal
linter cache, to facilitate better testing, as well as making use of
mocked linters instead of depending on linters on disk (which may
change). In addition, a dummy linter is defined to test the autoloading
behavior.

Header guards were removed from all linters as:

* A: ale won't try and load linters if they already exist in memory
* B: we can't reset state for testing if they can't be loaded again
2016-10-21 21:02:20 -05:00
Bjorn Neergaard fb4b797dd2
Use explicit scope in all ale_linters
vint -s is now clean
2016-10-11 06:14:26 -05:00
Bjorn Neergaard 7f0ce89d2b First pass at optimizing ale to autoload (#80)
* First pass at optimizing ale to autoload

First off, the structure/function names should be revised a bit,
but I will wait for @w0rp's input before unifying the naming style.
Second off, the docs probably need some more work, I just did some
simple find-and-replace work.

With that said, this pull brings major performance gains for ale. On my
slowest system, fully loading ale and all its code takes around 150ms.

I have moved all of ale's autoload-able code to autoload/, and in
addition, implemented lazy-loading of linters. This brings load time on
that same system down to 5ms.

The only downside of lazy loading is that `g:ale_linters` cannot be
changed at runtime; however, it also speeds up performance at runtime by
simplfying the logic greatly.

Please let me know what you think!

Closes #59

* Address Travis/Vint errors

For some reason, ale isn't running vint for me...

* Incorporate feedback, make fixes

Lazy-loading logic is much improved.

* Add header comments; remove incorrect workaround

* Remove unneeded plugin guards

* Fix lazy-loading linter logic

Set the wrong variable....

* Fix capitialization
2016-10-10 19:51:29 +01:00
Vincent Lequertier d1cf208683 Add support for perl and perlcritic 2016-10-09 17:33:03 +02:00