add config to phpstan module
This commit is contained in:
parent
9a90725d1a
commit
37055e36cf
2 changed files with 129 additions and 12 deletions
|
@ -36,7 +36,8 @@ class ImproveActionPhpstan extends ImproveAction
|
||||||
if (!empty($_POST['save'])) {
|
if (!empty($_POST['save'])) {
|
||||||
$this->setSettings([
|
$this->setSettings([
|
||||||
'phpexe_path' => (!empty($_POST['phpexe_path']) ? $_POST['phpexe_path'] : ''),
|
'phpexe_path' => (!empty($_POST['phpexe_path']) ? $_POST['phpexe_path'] : ''),
|
||||||
'run_level' => (integer) $_POST['run_level']
|
'run_level' => (integer) $_POST['run_level'],
|
||||||
|
'ignored_vars' => (!empty($_POST['ignored_vars']) ? $_POST['ignored_vars'] : '')
|
||||||
]);
|
]);
|
||||||
$this->redirect($url);
|
$this->redirect($url);
|
||||||
}
|
}
|
||||||
|
@ -51,6 +52,14 @@ class ImproveActionPhpstan extends ImproveAction
|
||||||
' C:\path_to\php</p>' .
|
' C:\path_to\php</p>' .
|
||||||
'<p><label class="classic" for="run_level">' . __('Level:') . ' </label>' .
|
'<p><label class="classic" for="run_level">' . __('Level:') . ' </label>' .
|
||||||
form::number('run_level', ['min' => 0, 'max' => 9, 'default' => (integer) $this->getSetting('run_level')]) . '</p>' .
|
form::number('run_level', ['min' => 0, 'max' => 9, 'default' => (integer) $this->getSetting('run_level')]) . '</p>' .
|
||||||
|
'<p><label class="classic" for="ignored_vars">' .
|
||||||
|
__('List of ignored variables:') . '<br />' .
|
||||||
|
form::field('ignored_vars', 160, 255, $this->getSetting('ignored_vars')) . '</label>' .
|
||||||
|
'</p>' .
|
||||||
|
'<p class="form-note">' . sprintf(
|
||||||
|
__('If you have errors like "%s", you can add this var here. Use ; as separator and do not put $ ahead.'),
|
||||||
|
'Variable $var might not be defined'
|
||||||
|
) . ' ' . __('For exemple: var;_othervar;avar') . '<br />' . __('Some variables like core, _menu, are already set in ignored list.') . '</p>' .
|
||||||
'<p class="info">' . __('You must enable improve details to view analyse results !') . '</p>';
|
'<p class="info">' . __('You must enable improve details to view analyse results !') . '</p>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,17 +102,17 @@ class ImproveActionPhpstan extends ImproveAction
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getPhpPath()
|
private function getPhpPath(): string
|
||||||
{
|
{
|
||||||
$phpexe_path = $this->getSetting('phpexe_path');
|
$phpexe_path = $this->getSetting('phpexe_path');
|
||||||
if (empty($phpexe_path) && !empty(PHP_BINDIR)) {
|
if (empty($phpexe_path) && !empty(PHP_BINDIR)) {
|
||||||
$phpexe_path = PHP_BINDIR;
|
$phpexe_path = PHP_BINDIR;
|
||||||
}
|
}
|
||||||
|
|
||||||
return path::real($phpexe_path);
|
return (string) path::real($phpexe_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function writeConf()
|
private function writeConf(): bool
|
||||||
{
|
{
|
||||||
$content =
|
$content =
|
||||||
"parameters:\n" .
|
"parameters:\n" .
|
||||||
|
@ -117,15 +126,24 @@ class ImproveActionPhpstan extends ImproveAction
|
||||||
" excludePaths:\n" .
|
" excludePaths:\n" .
|
||||||
" - " . $this->module['sroot'] . "/*/libs/*\n\n" .
|
" - " . $this->module['sroot'] . "/*/libs/*\n\n" .
|
||||||
" bootstrapFiles:\n" .
|
" bootstrapFiles:\n" .
|
||||||
" - " . dirname(__FILE__) . "/libs/dc.phpstan.bootstrap.php\n\n" .
|
" - " . dirname(__FILE__) . "/libs/dc.phpstan.bootstrap.php\n\n";
|
||||||
" fileExtensions:\n" .
|
|
||||||
" - php\n" .
|
|
||||||
" - in\n\n" .
|
|
||||||
// extra
|
|
||||||
" checkMissingIterableValueType: false\n" .
|
|
||||||
" checkGenericClassInNonGenericObjectType: false\n";
|
|
||||||
|
|
||||||
return file_put_contents(DC_VAR . '/phpstan.neon', $content);
|
// common
|
||||||
|
$content .= file_get_contents(dirname(__FILE__) . "/libs/dc.phpstan.neon.conf");
|
||||||
|
|
||||||
|
$ignored = explode(';', $this->getSetting('ignored_vars'));
|
||||||
|
foreach($ignored as $var) {
|
||||||
|
$var = trim($var);
|
||||||
|
if (empty($var)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$content .=
|
||||||
|
' # $' . $var .' variable may not be defined (globally)' . "\n" .
|
||||||
|
' - message: \'#Variable \$' . $var . ' might not be defined#\'' . "\n" .
|
||||||
|
' path: *' . "\n\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
return (boolean) file_put_contents(DC_VAR . '/phpstan.neon', $content);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
99
inc/libs/dc.phpstan.neon.conf
Normal file
99
inc/libs/dc.phpstan.neon.conf
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
fileExtensions:
|
||||||
|
- php
|
||||||
|
- in
|
||||||
|
|
||||||
|
checkMissingIterableValueType: false
|
||||||
|
checkGenericClassInNonGenericObjectType: false
|
||||||
|
|
||||||
|
ignoreErrors:
|
||||||
|
|
||||||
|
# $core variable may not be defined (globally)
|
||||||
|
- message: '#Variable \$core might not be defined#'
|
||||||
|
path: *
|
||||||
|
|
||||||
|
# $_lang variable may not be defined (globally)
|
||||||
|
- message: '#Variable \$_lang might not be defined#'
|
||||||
|
path: *
|
||||||
|
|
||||||
|
# $p_url variable may not be defined (plugins)
|
||||||
|
- message: '#Variable \$p_url might not be defined#'
|
||||||
|
path: *.php
|
||||||
|
|
||||||
|
# $__widgets variable not may be defined (plugins)
|
||||||
|
- message: '#Variable \$__widgets might not be defined#'
|
||||||
|
path: *.php
|
||||||
|
|
||||||
|
# $__default_widgets variable may not be defined (plugins)
|
||||||
|
- message: '#Variable \$__default_widgets might not be defined#'
|
||||||
|
path: *.php
|
||||||
|
|
||||||
|
# $this variable may not be defined (plugins/themes)
|
||||||
|
- message: '#Variable \$this might not be defined#'
|
||||||
|
paths:
|
||||||
|
- */_define.php
|
||||||
|
- */_install.php
|
||||||
|
- */_uninstall.php
|
||||||
|
|
||||||
|
# $_menu variable may not be defined (plugins/themes)
|
||||||
|
- message: '#Variable \$_menu might not be defined#'
|
||||||
|
path: */_admin.php
|
||||||
|
|
||||||
|
# record object and auto properties
|
||||||
|
- message: '#Access to an undefined property record::#'
|
||||||
|
path: *
|
||||||
|
|
||||||
|
# dcWidgets object and auto properties
|
||||||
|
- message: '#Access to an undefined property dcWidgets::#'
|
||||||
|
path: *
|
||||||
|
|
||||||
|
# xmlTag object and auto properties
|
||||||
|
- message : '#Access to an undefined property xmlTag::#'
|
||||||
|
path: *
|
||||||
|
|
||||||
|
# xmlTag object methods
|
||||||
|
- message : '#Call to an undefined method xmlTag::#'
|
||||||
|
path: *
|
||||||
|
|
||||||
|
# dcSettings object and auto properties
|
||||||
|
- message : '#Access to an undefined property dcSettings::#'
|
||||||
|
path: *
|
||||||
|
|
||||||
|
# dcPrefs object and auto properties
|
||||||
|
- message : '#Access to an undefined property dcPrefs::#'
|
||||||
|
path: *
|
||||||
|
|
||||||
|
# dbStruct object and auto properties
|
||||||
|
- message : '#Access to an undefined property dbStruct::#'
|
||||||
|
path: *
|
||||||
|
|
||||||
|
# fileItem object and auto properties
|
||||||
|
- message : '#Access to an undefined property fileItem::#'
|
||||||
|
path: *
|
||||||
|
|
||||||
|
# cursor object and auto properties
|
||||||
|
- message : '#Access to an undefined property cursor::#'
|
||||||
|
path: *
|
||||||
|
|
||||||
|
# static record extensions
|
||||||
|
- message: '#Call to an undefined method record::#'
|
||||||
|
path: *
|
||||||
|
|
||||||
|
# Intensive use of magic __set/__get/__call/__invoke causes theses wrong warnings
|
||||||
|
- message: '#Call to an undefined method form[a-zA-Z0-9\\_]+::#'
|
||||||
|
path: *
|
||||||
|
|
||||||
|
# Intensive use of magic __set/__get/__call/__invoke causes theses wrong warnings
|
||||||
|
- message: '#Access to an undefined property form[a-zA-Z0-9\\_]+::#'
|
||||||
|
path: *
|
||||||
|
|
||||||
|
# form<*>filters
|
||||||
|
- message: '#Access to an undefined property admin[a-zA-Z0-9\\_]+Filter::\$[a-zA-Z0-9\\_]+.#'
|
||||||
|
path: *
|
||||||
|
|
||||||
|
# dcAdminfilters
|
||||||
|
- message: '#Access to an undefined property dcAdminFilter::\$[a-zA-Z0-9\\_]+.#'
|
||||||
|
path: *
|
||||||
|
|
||||||
|
# adminMediaPage
|
||||||
|
- message: '#Access to an undefined property adminMediaPage::\$[a-zA-Z0-9\\_]+.#'
|
||||||
|
path: *
|
Loading…
Reference in a new issue