From 5209bed12f2526385e4e7776a35c91d0c8f31fbd Mon Sep 17 00:00:00 2001 From: Przepompownia Date: Mon, 15 May 2017 07:27:25 +0300 Subject: [PATCH] New checker for PHP: phpstan. --- doc/syntastic-checkers.txt | 19 +++++++++++++ plugin/syntastic.vim | 2 +- syntax_checkers/php/phpstan.vim | 49 +++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 syntax_checkers/php/phpstan.vim diff --git a/doc/syntastic-checkers.txt b/doc/syntastic-checkers.txt index 8cf8f9a1..db10b5a8 100644 --- a/doc/syntastic-checkers.txt +++ b/doc/syntastic-checkers.txt @@ -4633,6 +4633,7 @@ The following checkers are available for PHP (filetype "php"): 2. PHP_CodeSniffer..........|syntastic-php-phpcs| 3. PHPLint..................|syntastic-php-phplint| 4. PHP Mess Detector........|syntastic-php-phpmd| + 5. PHPStan..................|syntastic-php-phpstan| ------------------------------------------------------------------------------ 1. PHP *syntastic-php-php* @@ -4712,6 +4713,24 @@ Checker options~ This checker is initialised using the "makeprgBuild()" function and thus it accepts the standard options described at |syntastic-config-makeprg|. +------------------------------------------------------------------------------ +5. PHP Static Analysis Tool *syntastic-php-phpstan* + +Name: phpstan +Maintainer: Przepompownia + +"PHPStan" focuses on finding errors in your code without actually running it. +See the project's page iat GitHub for details: + + https://github.com/phpstan/phpstan + +Syntastic supports "PHPStan" versions 0.7 and later. + +Checker options~ + +This checker is initialised using the "makeprgBuild()" function and thus it +accepts the standard options described at |syntastic-config-makeprg|. + ============================================================================== SYNTAX CHECKERS FOR POD *syntastic-checkers-pod* diff --git a/plugin/syntastic.vim b/plugin/syntastic.vim index 47708112..c5f21197 100644 --- a/plugin/syntastic.vim +++ b/plugin/syntastic.vim @@ -19,7 +19,7 @@ if has('reltime') lockvar! g:_SYNTASTIC_START endif -let g:_SYNTASTIC_VERSION = '3.8.0-53' +let g:_SYNTASTIC_VERSION = '3.8.0-54' lockvar g:_SYNTASTIC_VERSION " Sanity checks {{{1 diff --git a/syntax_checkers/php/phpstan.vim b/syntax_checkers/php/phpstan.vim new file mode 100644 index 00000000..b81ccc97 --- /dev/null +++ b/syntax_checkers/php/phpstan.vim @@ -0,0 +1,49 @@ +"============================================================================ +"File: phpstan.vim +"Description: Syntax checking plugin for syntastic +"Maintainer: Przepompownia przepompownia@users.noreply.github.com +"License: This program is free software. It comes without any warranty, +" to the extent permitted by applicable law. You can redistribute +" it and/or modify it under the terms of the Do What The Fuck You +" Want To Public License, Version 2, as published by Sam Hocevar. +" See http://sam.zoy.org/wtfpl/COPYING for more details. +" +"============================================================================ + +if exists('g:loaded_syntastic_php_phpstan_checker') + finish +endif +let g:loaded_syntastic_php_phpstan_checker = 1 + +let s:save_cpo = &cpo +set cpo&vim + +function! SyntaxCheckers_php_phpstan_IsAvailable() dict + if !executable(self.getExec()) + return 0 + endif + return syntastic#util#versionIsAtLeast(self.getVersion(), [0, 7]) +endfunction + +function! SyntaxCheckers_php_phpstan_GetLocList() dict + let makeprg = self.makeprgBuild({ + \ 'exe_after': 'analyse', + \ 'args': '--level=5', + \ 'args_after': '--errorFormat raw' }) + + let errorformat = '%f:%l:%m' + + return SyntasticMake({ + \ 'makeprg': makeprg, + \ 'errorformat': errorformat, + \ 'subtype' : 'Style' }) +endfunction + +call g:SyntasticRegistry.CreateAndRegisterChecker({ + \ 'filetype': 'php', + \ 'name': 'phpstan'}) + +let &cpo = s:save_cpo +unlet s:save_cpo + +" vim: set sw=4 sts=4 et fdm=marker: