2016-12-30 04:11:10 +01:00
|
|
|
<?xml version="1.0" encoding="utf-8" ?>
|
2018-04-22 00:34:28 +02:00
|
|
|
<xs:schema
|
2018-04-22 01:05:26 +02:00
|
|
|
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
|
|
|
xmlns="https://getpsalm.org/schema/config"
|
|
|
|
targetNamespace="https://getpsalm.org/schema/config"
|
|
|
|
elementFormDefault="qualified"
|
2018-04-22 00:34:28 +02:00
|
|
|
>
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="psalm" type="PsalmType" />
|
|
|
|
|
|
|
|
<xs:complexType name="PsalmType">
|
2016-12-30 05:37:09 +01:00
|
|
|
<xs:choice maxOccurs="unbounded">
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="projectFiles" type="ProjectFilesType" minOccurs="1" maxOccurs="1" />
|
2020-06-19 06:13:09 +02:00
|
|
|
<xs:element name="extraFiles" type="ProjectFilesType" minOccurs="0" maxOccurs="1" />
|
2020-05-26 05:28:11 +02:00
|
|
|
<xs:element name="taintAnalysis" type="TaintAnalysisType" minOccurs="0" maxOccurs="1" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="fileExtensions" type="FileExtensionsType" minOccurs="0" maxOccurs="1" />
|
|
|
|
<xs:element name="mockClasses" type="MockClassesType" minOccurs="0" maxOccurs="1" />
|
2017-02-01 01:21:33 +01:00
|
|
|
<xs:element name="stubs" type="StubsType" minOccurs="0" maxOccurs="1" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="plugins" type="PluginsType" minOccurs="0" maxOccurs="1" />
|
2018-09-18 22:42:51 +02:00
|
|
|
<xs:element name="forbiddenFunctions" type="ExitFunctionsType" minOccurs="0" maxOccurs="1" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="issueHandlers" type="IssueHandlersType" minOccurs="0" maxOccurs="1" />
|
2018-06-22 07:13:49 +02:00
|
|
|
<xs:element name="ignoreExceptions" type="ExceptionsType" minOccurs="0" maxOccurs="1" />
|
2019-03-06 00:08:41 +01:00
|
|
|
<xs:element name="globals" type="GlobalsType" minOccurs="0" maxOccurs="1" />
|
2020-10-07 15:56:21 +02:00
|
|
|
<xs:element name="universalObjectCrates" type="UniversalObjectCratesType" minOccurs="0" maxOccurs="1" />
|
2021-12-09 23:47:01 +01:00
|
|
|
<xs:element name="enableExtensions" type="ExtensionsType" minOccurs="0" maxOccurs="1" />
|
|
|
|
<xs:element name="disableExtensions" type="ExtensionsType" minOccurs="0" maxOccurs="1" />
|
2016-12-30 05:37:09 +01:00
|
|
|
</xs:choice>
|
2016-12-30 04:11:10 +01:00
|
|
|
|
|
|
|
<xs:attribute name="autoloader" type="xs:string" />
|
|
|
|
<xs:attribute name="cacheDirectory" type="xs:string" />
|
2018-10-30 15:32:20 +01:00
|
|
|
<xs:attribute name="errorBaseline" type="xs:string" />
|
2019-04-22 17:32:06 +02:00
|
|
|
<xs:attribute name="maxStringLength" type="xs:string" />
|
2022-04-27 07:42:37 +02:00
|
|
|
<xs:attribute name="maxShapedArraySize" type="xs:string" default="100" />
|
2019-10-25 16:07:52 +02:00
|
|
|
<xs:attribute name="name" type="xs:string" />
|
2020-01-30 08:20:23 +01:00
|
|
|
<xs:attribute name="phpVersion" type="xs:string" />
|
2019-10-25 16:07:52 +02:00
|
|
|
<xs:attribute name="serializer" type="xs:string" />
|
|
|
|
|
|
|
|
<xs:attribute name="addParamDefaultToDocblockType" type="xs:boolean" default="false" />
|
|
|
|
<xs:attribute name="allowFileIncludes" type="xs:boolean" default="true" />
|
|
|
|
<xs:attribute name="allowStringToStandInForClass" type="xs:boolean" default="false" />
|
|
|
|
<xs:attribute name="checkForThrowsDocblock" type="xs:boolean" default="false" />
|
|
|
|
<xs:attribute name="checkForThrowsInGlobalScope" type="xs:boolean" default="false" />
|
|
|
|
<xs:attribute name="ensureArrayIntOffsetsExist" type="xs:boolean" default="false" />
|
|
|
|
<xs:attribute name="ensureArrayStringOffsetsExist" type="xs:boolean" default="false" />
|
|
|
|
<xs:attribute name="findUnusedCode" type="xs:boolean" default="false" />
|
|
|
|
<xs:attribute name="findUnusedVariablesAndParams" type="xs:boolean" default="false" />
|
2020-08-22 16:01:26 +02:00
|
|
|
<xs:attribute name="findUnusedPsalmSuppress" type="xs:boolean" default="false" />
|
2019-10-25 16:07:52 +02:00
|
|
|
<xs:attribute name="hideExternalErrors" type="xs:boolean" default="false" />
|
|
|
|
<xs:attribute name="hoistConstants" type="xs:boolean" default="false" />
|
2020-06-04 04:29:09 +02:00
|
|
|
<xs:attribute name="ignoreInternalFunctionFalseReturn" type="xs:boolean" default="true" />
|
2019-10-25 16:07:52 +02:00
|
|
|
<xs:attribute name="ignoreInternalFunctionNullReturn" type="xs:boolean" default="true" />
|
|
|
|
<xs:attribute name="includePhpVersionsInErrorBaseline" type="xs:boolean" default="false" />
|
2021-06-22 20:20:10 +02:00
|
|
|
<xs:attribute name="inferPropertyTypesFromConstructor" type="xs:boolean" default="true" />
|
2019-10-25 16:07:52 +02:00
|
|
|
<xs:attribute name="memoizeMethodCallResults" type="xs:boolean" default="false" />
|
|
|
|
<xs:attribute name="rememberPropertyAssignmentsAfterCall" type="xs:boolean" default="true" />
|
2020-10-05 16:08:41 +02:00
|
|
|
<xs:attribute name="resolveFromConfigFile" type="xs:boolean" default="true" />
|
2019-10-25 16:07:52 +02:00
|
|
|
<xs:attribute name="strictBinaryOperands" type="xs:boolean" default="false" />
|
|
|
|
<xs:attribute name="throwExceptionOnError" type="xs:boolean" default="false" />
|
2022-06-06 11:56:28 +02:00
|
|
|
<xs:attribute name="disableVarParsing" type="xs:boolean" default="false" />
|
2021-03-11 06:05:23 +01:00
|
|
|
<xs:attribute name="errorLevel" type="xs:integer" default="2" />
|
2020-02-19 02:30:37 +01:00
|
|
|
<xs:attribute name="reportMixedIssues" type="xs:boolean" default="true" />
|
2019-10-25 16:07:52 +02:00
|
|
|
<xs:attribute name="useDocblockTypes" type="xs:boolean" default="true" />
|
|
|
|
<xs:attribute name="useDocblockPropertyTypes" type="xs:boolean" default="false" />
|
|
|
|
<xs:attribute name="usePhpDocMethodsWithoutMagicCall" type="xs:boolean" default="false" />
|
2020-02-10 17:40:33 +01:00
|
|
|
<xs:attribute name="usePhpDocPropertiesWithoutMagicCall" type="xs:boolean" default="false" />
|
2020-10-05 16:08:41 +02:00
|
|
|
<xs:attribute name="skipChecksOnUnresolvableIncludes" type="xs:boolean" default="false" />
|
2020-06-16 04:36:42 +02:00
|
|
|
<xs:attribute name="sealAllMethods" type="xs:boolean" default="false" />
|
2021-12-30 11:23:04 +01:00
|
|
|
<xs:attribute name="sealAllProperties" type="xs:boolean" default="false" />
|
2020-07-10 19:22:03 +02:00
|
|
|
<xs:attribute name="runTaintAnalysis" type="xs:boolean" default="false" />
|
2020-07-17 16:09:42 +02:00
|
|
|
<xs:attribute name="usePhpStormMetaPath" type="xs:boolean" default="true" />
|
2020-08-14 06:27:33 +02:00
|
|
|
<xs:attribute name="allowInternalNamedArgumentCalls" type="xs:boolean" default="true" />
|
|
|
|
<xs:attribute name="allowNamedArgumentCalls" type="xs:boolean" default="true" />
|
2020-09-01 15:22:05 +02:00
|
|
|
<xs:attribute name="reportInfo" type="xs:boolean" default="true" />
|
2020-11-06 00:20:04 +01:00
|
|
|
<xs:attribute name="restrictReturnTypes" type="xs:boolean" default="false" />
|
2020-11-27 11:28:46 +01:00
|
|
|
<xs:attribute name="limitMethodComplexity" type="xs:boolean" default="false" />
|
2022-01-19 13:24:26 +01:00
|
|
|
<xs:attribute name="disableSuppressAll" type="xs:boolean" default="false" />
|
2021-07-19 19:40:17 +02:00
|
|
|
<xs:attribute name="triggerErrorExits" type="TriggerErrorExitsType" default="default" />
|
2022-02-21 11:26:34 +01:00
|
|
|
<xs:attribute name="threads" type="xs:integer" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2016-12-30 04:11:10 +01:00
|
|
|
</xs:complexType>
|
|
|
|
|
|
|
|
<xs:complexType name="ProjectFilesType">
|
2016-12-30 04:16:46 +01:00
|
|
|
<xs:choice maxOccurs="unbounded">
|
2018-08-24 23:46:13 +02:00
|
|
|
<xs:element name="directory" minOccurs="0" maxOccurs="unbounded" type="ProjectDirectoryAttributeType" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="file" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
2019-01-28 17:50:18 +01:00
|
|
|
<xs:element name="ignoreFiles" minOccurs="0" maxOccurs="1" type="IgnoreFilesType" />
|
2016-12-30 04:16:46 +01:00
|
|
|
</xs:choice>
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2016-12-30 04:11:10 +01:00
|
|
|
</xs:complexType>
|
|
|
|
|
2020-05-26 05:28:11 +02:00
|
|
|
<xs:complexType name="TaintAnalysisType">
|
|
|
|
<xs:choice maxOccurs="unbounded">
|
|
|
|
<xs:element name="ignoreFiles" minOccurs="0" maxOccurs="1" type="IgnoreFilesType" />
|
|
|
|
</xs:choice>
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2020-05-26 05:28:11 +02:00
|
|
|
</xs:complexType>
|
|
|
|
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:complexType name="NameAttributeType">
|
|
|
|
<xs:attribute name="name" type="xs:string" use="required" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2016-12-30 04:11:10 +01:00
|
|
|
</xs:complexType>
|
|
|
|
|
2020-10-30 00:41:10 +01:00
|
|
|
<xs:complexType name="StubsAttributeType">
|
|
|
|
<xs:attribute name="name" type="xs:string" use="required" />
|
|
|
|
<xs:attribute name="preloadClasses" type="xs:boolean" default="false" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2020-10-30 00:41:10 +01:00
|
|
|
</xs:complexType>
|
|
|
|
|
2019-01-28 17:50:18 +01:00
|
|
|
<xs:complexType name="IgnoreFilesType">
|
|
|
|
<xs:choice maxOccurs="unbounded">
|
|
|
|
<xs:element name="directory" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
<xs:element name="file" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
</xs:choice>
|
|
|
|
|
|
|
|
<xs:attribute name="allowMissingFiles" type="xs:string" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2019-01-28 17:50:18 +01:00
|
|
|
</xs:complexType>
|
|
|
|
|
2018-08-24 23:46:13 +02:00
|
|
|
<xs:complexType name="ProjectDirectoryAttributeType">
|
|
|
|
<xs:attribute name="name" type="xs:string" use="required" />
|
|
|
|
<xs:attribute name="ignoreTypeStats" type="xs:string" />
|
2021-12-14 20:25:27 +01:00
|
|
|
<xs:attribute name="resolveSymlinks" type="xs:boolean" />
|
2018-08-29 21:10:56 +02:00
|
|
|
<xs:attribute name="useStrictTypes" type="xs:string" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2018-08-24 23:46:13 +02:00
|
|
|
</xs:complexType>
|
|
|
|
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:complexType name="FileExtensionsType">
|
|
|
|
<xs:sequence>
|
2016-12-30 05:37:09 +01:00
|
|
|
<xs:element name="extension" maxOccurs="unbounded">
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:complexType>
|
|
|
|
<xs:attribute name="name" type="xs:string" use="required" />
|
2018-01-21 18:44:46 +01:00
|
|
|
<xs:attribute name="scanner" type="xs:string" />
|
|
|
|
<xs:attribute name="checker" type="xs:string" />
|
2016-12-30 04:11:10 +01:00
|
|
|
</xs:complexType>
|
|
|
|
</xs:element>
|
|
|
|
</xs:sequence>
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2016-12-30 04:11:10 +01:00
|
|
|
</xs:complexType>
|
|
|
|
|
|
|
|
<xs:complexType name="MockClassesType">
|
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="class" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
</xs:sequence>
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2016-12-30 04:11:10 +01:00
|
|
|
</xs:complexType>
|
|
|
|
|
2020-10-07 15:56:21 +02:00
|
|
|
<xs:complexType name="UniversalObjectCratesType">
|
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="class" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
</xs:sequence>
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2020-10-07 15:56:21 +02:00
|
|
|
</xs:complexType>
|
|
|
|
|
2018-06-22 07:13:49 +02:00
|
|
|
<xs:complexType name="ExceptionsType">
|
|
|
|
<xs:sequence>
|
2019-04-10 16:49:27 +02:00
|
|
|
<xs:element name="class" minOccurs="0" maxOccurs="unbounded" type="ExceptionType" />
|
|
|
|
<xs:element name="classAndDescendants" minOccurs="0" maxOccurs="unbounded" type="ExceptionType" />
|
2018-06-22 07:13:49 +02:00
|
|
|
</xs:sequence>
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2018-06-22 07:13:49 +02:00
|
|
|
</xs:complexType>
|
|
|
|
|
2017-02-01 01:21:33 +01:00
|
|
|
<xs:complexType name="StubsType">
|
|
|
|
<xs:sequence>
|
2020-10-30 00:41:10 +01:00
|
|
|
<xs:element name="file" maxOccurs="unbounded" type="StubsAttributeType" />
|
2017-02-01 01:21:33 +01:00
|
|
|
</xs:sequence>
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2017-02-01 01:21:33 +01:00
|
|
|
</xs:complexType>
|
|
|
|
|
2018-07-13 05:26:08 +02:00
|
|
|
<xs:complexType name="ExitFunctionsType">
|
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="function" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
</xs:sequence>
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2018-07-13 05:26:08 +02:00
|
|
|
</xs:complexType>
|
|
|
|
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:complexType name="PluginsType">
|
Plugin loading (#855)
* add ability to load plugins by class names
- Plugins need to implement `__invoke(PluginFacade $psalm):void` method
- Plugins are enabled by adding `<pluginClass
class="Qualified\Class\Name"/>`
- `PluginFacade` provides a single point of contact with Psalm, so that
plugins cannot become coupled to Psalm internals
* added `psalm-plugin` cli tool to manage plugins
Available commands:
`psalm-plugin list` - lists available and enabled plugins
`psalm-plugin enable 'Plugin\Class\Name'` - enables plugin (modifies `psalm.xml`)
`psalm-plugin disable 'Plugin\Class\Name'` - disables plugin (modifies `psalm.xml`)
Plugin installation:
`composer install plugin-vendor/plugin-package-name`
Plugin authoring:
Plugins are identified by package `type` field, which should contain
`psalm-plugin` string.
`extra.pluginClass` should refer to the name of the class implementing
`__invoke(PluginFacade $psalm):void` function
Todo:
- better config file search
- better output for `psalm-plugin`
- better formatting for modified xml file
- composer skeleton project for plugins
- ability to refer to plugins by package name (cli only)
- composer plugin to (optionally) enable plugin upon installation
- documentation on plugin installation and authoring
- interfaces for plugin dependencies
- interface for plugin entry point
- migration path for legacy plugins
* documented previously undocumented plugin methods
* split legacy plugin registration into a wrapper class
also added `PluginApi` namespace and `RegistrationInterface`
* reuse psalm's config search algorithm
* enable/disable plugins by composer package name
* allow specifying alternative config file name
* whitelist PluginApi namespace
three times, but well, it works now
* interface for plugin entry points
* psalm-plugin as a symfony console app
* fixed errors found by psalm
* suppressed false positive UnusedMethods
* cs fix
* better psalm-plugin output
* don't leave empty `plugins` node to avoid old schema violation
* removed junk file that shouldn't be there
* cs fix
* fixed phpunit failure (constant redefinition)
* work around missing docblock in on symfony console
* php 7.0 compatibility
* allow `pluginClass` child elements as plugin configuration
* decouple console commands from undelying implementation
- introduce PluginListFactory
- add `PluginList::enable(string $class)` and `PluginList::disable(string $class)`
* PluginList tests
* ComposerLock test
* droppped debugging statement
* added part of console command tests
* added tests for EnableCommand
* added DisableCommand tests
* ignore unused args
* ConfigFile test
* disable travis cache in attempt to fix builds
* nah, that didn't work
* update for upstream changes
* rebase fixes
* namespaced `extra` entry for entry point
* s/PluginFacade/PluginRegistrationSocket/g
* Added $config parameter to PluginEntryPointInterface::__invoke()
* cs fixes
* entry point interface php7.0 compatibility
* cleaned up old cruft
- dropped todos I'm not going to pursues
- locked entry point to be a class implementing entry point interface
* fixed legacy plugins docs
* Added RegistrationInterface::registerHooksFromClass()
It mimics the way old plugins were registered in Psalm\Config, so
handler classes extending Psalm\Plugin should be fully compatible with
it.
Since Psalm\Plugin-style plugin registration was moved to
RegistrationSocket, LegacyPlugin now only load file-based plugins, so it
was renamed to FileBasedPluginAdapter.
* Converted EchoChecker plugin to composer-based format
- Its subfolder is registered as a local composer package in the root
composer.json, so it's directly installable with
```
composer require psalm/echo-checker-plugin
```
- Migration is trivial: drop the plugin into a separate folder, then add
simple composer.json and the entry point class.
* Updated docs
* Don't reject hook handlers that inherit handling methods
* strip void return type in stub file
2018-11-11 05:23:36 +01:00
|
|
|
<xs:choice minOccurs="0" maxOccurs="unbounded">
|
|
|
|
<xs:element name="plugin">
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:complexType>
|
|
|
|
<xs:attribute name="filename" type="xs:string" use="required" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2016-12-30 04:11:10 +01:00
|
|
|
</xs:complexType>
|
|
|
|
</xs:element>
|
Plugin loading (#855)
* add ability to load plugins by class names
- Plugins need to implement `__invoke(PluginFacade $psalm):void` method
- Plugins are enabled by adding `<pluginClass
class="Qualified\Class\Name"/>`
- `PluginFacade` provides a single point of contact with Psalm, so that
plugins cannot become coupled to Psalm internals
* added `psalm-plugin` cli tool to manage plugins
Available commands:
`psalm-plugin list` - lists available and enabled plugins
`psalm-plugin enable 'Plugin\Class\Name'` - enables plugin (modifies `psalm.xml`)
`psalm-plugin disable 'Plugin\Class\Name'` - disables plugin (modifies `psalm.xml`)
Plugin installation:
`composer install plugin-vendor/plugin-package-name`
Plugin authoring:
Plugins are identified by package `type` field, which should contain
`psalm-plugin` string.
`extra.pluginClass` should refer to the name of the class implementing
`__invoke(PluginFacade $psalm):void` function
Todo:
- better config file search
- better output for `psalm-plugin`
- better formatting for modified xml file
- composer skeleton project for plugins
- ability to refer to plugins by package name (cli only)
- composer plugin to (optionally) enable plugin upon installation
- documentation on plugin installation and authoring
- interfaces for plugin dependencies
- interface for plugin entry point
- migration path for legacy plugins
* documented previously undocumented plugin methods
* split legacy plugin registration into a wrapper class
also added `PluginApi` namespace and `RegistrationInterface`
* reuse psalm's config search algorithm
* enable/disable plugins by composer package name
* allow specifying alternative config file name
* whitelist PluginApi namespace
three times, but well, it works now
* interface for plugin entry points
* psalm-plugin as a symfony console app
* fixed errors found by psalm
* suppressed false positive UnusedMethods
* cs fix
* better psalm-plugin output
* don't leave empty `plugins` node to avoid old schema violation
* removed junk file that shouldn't be there
* cs fix
* fixed phpunit failure (constant redefinition)
* work around missing docblock in on symfony console
* php 7.0 compatibility
* allow `pluginClass` child elements as plugin configuration
* decouple console commands from undelying implementation
- introduce PluginListFactory
- add `PluginList::enable(string $class)` and `PluginList::disable(string $class)`
* PluginList tests
* ComposerLock test
* droppped debugging statement
* added part of console command tests
* added tests for EnableCommand
* added DisableCommand tests
* ignore unused args
* ConfigFile test
* disable travis cache in attempt to fix builds
* nah, that didn't work
* update for upstream changes
* rebase fixes
* namespaced `extra` entry for entry point
* s/PluginFacade/PluginRegistrationSocket/g
* Added $config parameter to PluginEntryPointInterface::__invoke()
* cs fixes
* entry point interface php7.0 compatibility
* cleaned up old cruft
- dropped todos I'm not going to pursues
- locked entry point to be a class implementing entry point interface
* fixed legacy plugins docs
* Added RegistrationInterface::registerHooksFromClass()
It mimics the way old plugins were registered in Psalm\Config, so
handler classes extending Psalm\Plugin should be fully compatible with
it.
Since Psalm\Plugin-style plugin registration was moved to
RegistrationSocket, LegacyPlugin now only load file-based plugins, so it
was renamed to FileBasedPluginAdapter.
* Converted EchoChecker plugin to composer-based format
- Its subfolder is registered as a local composer package in the root
composer.json, so it's directly installable with
```
composer require psalm/echo-checker-plugin
```
- Migration is trivial: drop the plugin into a separate folder, then add
simple composer.json and the entry point class.
* Updated docs
* Don't reject hook handlers that inherit handling methods
* strip void return type in stub file
2018-11-11 05:23:36 +01:00
|
|
|
<xs:element name="pluginClass">
|
|
|
|
<xs:complexType>
|
|
|
|
<xs:sequence>
|
|
|
|
<xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
|
|
|
|
</xs:sequence>
|
|
|
|
<xs:attribute name="class" type="xs:string" use="required" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
Plugin loading (#855)
* add ability to load plugins by class names
- Plugins need to implement `__invoke(PluginFacade $psalm):void` method
- Plugins are enabled by adding `<pluginClass
class="Qualified\Class\Name"/>`
- `PluginFacade` provides a single point of contact with Psalm, so that
plugins cannot become coupled to Psalm internals
* added `psalm-plugin` cli tool to manage plugins
Available commands:
`psalm-plugin list` - lists available and enabled plugins
`psalm-plugin enable 'Plugin\Class\Name'` - enables plugin (modifies `psalm.xml`)
`psalm-plugin disable 'Plugin\Class\Name'` - disables plugin (modifies `psalm.xml`)
Plugin installation:
`composer install plugin-vendor/plugin-package-name`
Plugin authoring:
Plugins are identified by package `type` field, which should contain
`psalm-plugin` string.
`extra.pluginClass` should refer to the name of the class implementing
`__invoke(PluginFacade $psalm):void` function
Todo:
- better config file search
- better output for `psalm-plugin`
- better formatting for modified xml file
- composer skeleton project for plugins
- ability to refer to plugins by package name (cli only)
- composer plugin to (optionally) enable plugin upon installation
- documentation on plugin installation and authoring
- interfaces for plugin dependencies
- interface for plugin entry point
- migration path for legacy plugins
* documented previously undocumented plugin methods
* split legacy plugin registration into a wrapper class
also added `PluginApi` namespace and `RegistrationInterface`
* reuse psalm's config search algorithm
* enable/disable plugins by composer package name
* allow specifying alternative config file name
* whitelist PluginApi namespace
three times, but well, it works now
* interface for plugin entry points
* psalm-plugin as a symfony console app
* fixed errors found by psalm
* suppressed false positive UnusedMethods
* cs fix
* better psalm-plugin output
* don't leave empty `plugins` node to avoid old schema violation
* removed junk file that shouldn't be there
* cs fix
* fixed phpunit failure (constant redefinition)
* work around missing docblock in on symfony console
* php 7.0 compatibility
* allow `pluginClass` child elements as plugin configuration
* decouple console commands from undelying implementation
- introduce PluginListFactory
- add `PluginList::enable(string $class)` and `PluginList::disable(string $class)`
* PluginList tests
* ComposerLock test
* droppped debugging statement
* added part of console command tests
* added tests for EnableCommand
* added DisableCommand tests
* ignore unused args
* ConfigFile test
* disable travis cache in attempt to fix builds
* nah, that didn't work
* update for upstream changes
* rebase fixes
* namespaced `extra` entry for entry point
* s/PluginFacade/PluginRegistrationSocket/g
* Added $config parameter to PluginEntryPointInterface::__invoke()
* cs fixes
* entry point interface php7.0 compatibility
* cleaned up old cruft
- dropped todos I'm not going to pursues
- locked entry point to be a class implementing entry point interface
* fixed legacy plugins docs
* Added RegistrationInterface::registerHooksFromClass()
It mimics the way old plugins were registered in Psalm\Config, so
handler classes extending Psalm\Plugin should be fully compatible with
it.
Since Psalm\Plugin-style plugin registration was moved to
RegistrationSocket, LegacyPlugin now only load file-based plugins, so it
was renamed to FileBasedPluginAdapter.
* Converted EchoChecker plugin to composer-based format
- Its subfolder is registered as a local composer package in the root
composer.json, so it's directly installable with
```
composer require psalm/echo-checker-plugin
```
- Migration is trivial: drop the plugin into a separate folder, then add
simple composer.json and the entry point class.
* Updated docs
* Don't reject hook handlers that inherit handling methods
* strip void return type in stub file
2018-11-11 05:23:36 +01:00
|
|
|
</xs:complexType>
|
|
|
|
</xs:element>
|
|
|
|
</xs:choice>
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2016-12-30 04:11:10 +01:00
|
|
|
</xs:complexType>
|
|
|
|
|
|
|
|
<xs:complexType name="IssueHandlersType">
|
|
|
|
<xs:choice minOccurs="0" maxOccurs="unbounded">
|
2017-01-20 06:10:10 +01:00
|
|
|
<xs:element name="AbstractInstantiation" type="IssueHandlerType" minOccurs="0" />
|
2020-03-11 15:18:40 +01:00
|
|
|
<xs:element name="AbstractMethodCall" type="IssueHandlerType" minOccurs="0" />
|
2021-12-14 00:28:15 +01:00
|
|
|
<xs:element name="AmbiguousConstantInheritance" type="ClassConstantIssueHandlerType" minOccurs="0" />
|
2019-04-26 00:02:19 +02:00
|
|
|
<xs:element name="ArgumentTypeCoercion" type="ArgumentIssueHandlerType" minOccurs="0" />
|
2017-11-28 06:46:41 +01:00
|
|
|
<xs:element name="AssignmentToVoid" type="IssueHandlerType" minOccurs="0" />
|
2022-02-17 17:26:28 +01:00
|
|
|
<xs:element name="CheckType" type="IssueHandlerType" minOccurs="0" />
|
2017-12-22 18:56:59 +01:00
|
|
|
<xs:element name="CircularReference" type="IssueHandlerType" minOccurs="0" />
|
2020-11-27 23:02:37 +01:00
|
|
|
<xs:element name="ComplexFunction" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="ComplexMethod" type="IssueHandlerType" minOccurs="0" />
|
2021-06-07 16:46:26 +02:00
|
|
|
<xs:element name="ConfigIssue" type="IssueHandlerType" minOccurs="0" />
|
2017-02-23 06:25:28 +01:00
|
|
|
<xs:element name="ConflictingReferenceConstraint" type="IssueHandlerType" minOccurs="0" />
|
2020-08-10 18:26:25 +02:00
|
|
|
<xs:element name="ConstructorSignatureMismatch" type="IssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="ContinueOutsideLoop" type="IssueHandlerType" minOccurs="0" />
|
2018-03-21 03:36:03 +01:00
|
|
|
<xs:element name="DeprecatedClass" type="ClassIssueHandlerType" minOccurs="0" />
|
2019-06-06 20:48:33 +02:00
|
|
|
<xs:element name="DeprecatedConstant" type="IssueHandlerType" minOccurs="0" />
|
2019-06-15 18:09:15 +02:00
|
|
|
<xs:element name="DeprecatedFunction" type="FunctionIssueHandlerType" minOccurs="0" />
|
2019-06-06 20:48:33 +02:00
|
|
|
<xs:element name="DeprecatedInterface" type="ClassIssueHandlerType" minOccurs="0" />
|
2018-03-21 03:36:03 +01:00
|
|
|
<xs:element name="DeprecatedMethod" type="MethodIssueHandlerType" minOccurs="0" />
|
2018-05-11 06:07:41 +02:00
|
|
|
<xs:element name="DeprecatedProperty" type="PropertyIssueHandlerType" minOccurs="0" />
|
2019-06-06 20:48:33 +02:00
|
|
|
<xs:element name="DeprecatedTrait" type="IssueHandlerType" minOccurs="0" />
|
2018-02-07 00:44:53 +01:00
|
|
|
<xs:element name="DocblockTypeContradiction" type="IssueHandlerType" minOccurs="0" />
|
2018-01-18 23:16:50 +01:00
|
|
|
<xs:element name="DuplicateArrayKey" type="IssueHandlerType" minOccurs="0" />
|
2017-01-20 05:45:21 +01:00
|
|
|
<xs:element name="DuplicateClass" type="IssueHandlerType" minOccurs="0" />
|
2021-11-10 23:44:17 +01:00
|
|
|
<xs:element name="DuplicateConstant" type="ClassIssueHandlerType" minOccurs="0" />
|
2021-09-06 01:57:12 +02:00
|
|
|
<xs:element name="DuplicateEnumCase" type="ClassIssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="DuplicateEnumCaseValue" type="ClassIssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="DuplicateFunction" type="IssueHandlerType" minOccurs="0" />
|
2019-04-26 00:02:19 +02:00
|
|
|
<xs:element name="DuplicateMethod" type="MethodIssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="DuplicateParam" type="IssueHandlerType" minOccurs="0" />
|
2017-06-29 05:37:02 +02:00
|
|
|
<xs:element name="EmptyArrayAccess" type="IssueHandlerType" minOccurs="0" />
|
2020-10-19 21:08:18 +02:00
|
|
|
<xs:element name="ExtensionRequirementViolation" type="IssueHandlerType" minOccurs="0" />
|
2018-01-05 03:46:51 +01:00
|
|
|
<xs:element name="FalsableReturnStatement" type="IssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="FalseOperand" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="ForbiddenCode" type="IssueHandlerType" minOccurs="0" />
|
2020-07-12 22:16:01 +02:00
|
|
|
<xs:element name="IfThisIsMismatch" type="IssueHandlerType" minOccurs="0" />
|
2020-10-19 21:08:18 +02:00
|
|
|
<xs:element name="ImplementationRequirementViolation" type="IssueHandlerType" minOccurs="0" />
|
2019-05-14 21:44:46 +02:00
|
|
|
<xs:element name="ImplementedParamTypeMismatch" type="IssueHandlerType" minOccurs="0" />
|
2017-11-30 06:01:41 +01:00
|
|
|
<xs:element name="ImplementedReturnTypeMismatch" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="ImplicitToStringCast" type="IssueHandlerType" minOccurs="0" />
|
2020-01-23 20:33:07 +01:00
|
|
|
<xs:element name="ImpureByReferenceAssignment" type="IssueHandlerType" minOccurs="0" />
|
2019-07-18 07:31:48 +02:00
|
|
|
<xs:element name="ImpureFunctionCall" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="ImpureMethodCall" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="ImpurePropertyAssignment" type="IssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="ImpurePropertyFetch" type="IssueHandlerType" minOccurs="0" />
|
2020-01-28 04:55:20 +01:00
|
|
|
<xs:element name="ImpureStaticProperty" type="IssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="ImpureStaticVariable" type="IssueHandlerType" minOccurs="0" />
|
2020-08-24 00:37:46 +02:00
|
|
|
<xs:element name="ImpureVariable" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="InaccessibleClassConstant" type="IssueHandlerType" minOccurs="0" />
|
2019-04-26 00:02:19 +02:00
|
|
|
<xs:element name="InaccessibleMethod" type="MethodIssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="InaccessibleProperty" type="IssueHandlerType" minOccurs="0" />
|
2018-02-18 00:53:02 +01:00
|
|
|
<xs:element name="InterfaceInstantiation" type="IssueHandlerType" minOccurs="0" />
|
2018-12-02 00:37:49 +01:00
|
|
|
<xs:element name="InternalClass" type="ClassIssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="InternalMethod" type="MethodIssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="InternalProperty" type="PropertyIssueHandlerType" minOccurs="0" />
|
2019-04-26 00:02:19 +02:00
|
|
|
<xs:element name="InvalidArgument" type="ArgumentIssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="InvalidArrayAccess" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="InvalidArrayAssignment" type="IssueHandlerType" minOccurs="0" />
|
2017-11-16 03:10:07 +01:00
|
|
|
<xs:element name="InvalidArrayOffset" type="IssueHandlerType" minOccurs="0" />
|
2020-10-30 18:28:14 +01:00
|
|
|
<xs:element name="InvalidAttribute" type="IssueHandlerType" minOccurs="0" />
|
2017-10-07 17:27:54 +02:00
|
|
|
<xs:element name="InvalidCast" type="IssueHandlerType" minOccurs="0" />
|
2018-09-21 17:35:51 +02:00
|
|
|
<xs:element name="InvalidCatch" type="ClassIssueHandlerType" minOccurs="0" />
|
2018-03-21 03:36:03 +01:00
|
|
|
<xs:element name="InvalidClass" type="ClassIssueHandlerType" minOccurs="0" />
|
2022-02-14 00:19:25 +01:00
|
|
|
<xs:element name="InvalidClassConstantType" type="ClassConstantIssueHandlerType" minOccurs="0" />
|
2017-01-16 18:59:09 +01:00
|
|
|
<xs:element name="InvalidClone" type="IssueHandlerType" minOccurs="0" />
|
2022-01-20 23:51:55 +01:00
|
|
|
<xs:element name="InvalidConstantAssignmentValue" type="ClassConstantIssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="InvalidDocblock" type="IssueHandlerType" minOccurs="0" />
|
2019-02-23 17:31:33 +01:00
|
|
|
<xs:element name="InvalidDocblockParamName" type="IssueHandlerType" minOccurs="0" />
|
2021-09-05 19:12:24 +02:00
|
|
|
<xs:element name="InvalidEnumBackingType" type="ClassIssueHandlerType" minOccurs="0" />
|
2021-09-06 01:57:12 +02:00
|
|
|
<xs:element name="InvalidEnumCaseValue" type="ClassIssueHandlerType" minOccurs="0" />
|
2022-12-12 08:03:20 +01:00
|
|
|
<xs:element name="InvalidEnumMethod" type="MethodIssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="InvalidExtendClass" type="ClassIssueHandlerType" minOccurs="0" />
|
2018-01-07 23:17:18 +01:00
|
|
|
<xs:element name="InvalidFalsableReturnType" type="IssueHandlerType" minOccurs="0" />
|
2016-12-31 16:51:42 +01:00
|
|
|
<xs:element name="InvalidFunctionCall" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="InvalidGlobal" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="InvalidIterator" type="IssueHandlerType" minOccurs="0" />
|
2020-09-11 04:50:47 +02:00
|
|
|
<xs:element name="InvalidLiteralArgument" type="ArgumentIssueHandlerType" minOccurs="0" />
|
2017-04-08 15:20:32 +02:00
|
|
|
<xs:element name="InvalidMethodCall" type="IssueHandlerType" minOccurs="0" />
|
2020-10-03 02:35:23 +02:00
|
|
|
<xs:element name="InvalidNamedArgument" type="ArgumentIssueHandlerType" minOccurs="0" />
|
2018-01-07 23:17:18 +01:00
|
|
|
<xs:element name="InvalidNullableReturnType" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="InvalidOperand" type="IssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="InvalidParamDefault" type="IssueHandlerType" minOccurs="0" />
|
2019-11-11 06:21:43 +01:00
|
|
|
<xs:element name="InvalidParent" type="IssueHandlerType" minOccurs="0" />
|
2017-09-16 19:16:21 +02:00
|
|
|
<xs:element name="InvalidPassByReference" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="InvalidPropertyAssignment" type="IssueHandlerType" minOccurs="0" />
|
2018-01-10 16:56:43 +01:00
|
|
|
<xs:element name="InvalidPropertyAssignmentValue" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="InvalidPropertyFetch" type="IssueHandlerType" minOccurs="0" />
|
2017-12-07 21:50:25 +01:00
|
|
|
<xs:element name="InvalidReturnStatement" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="InvalidReturnType" type="IssueHandlerType" minOccurs="0" />
|
2019-04-26 00:02:19 +02:00
|
|
|
<xs:element name="InvalidScalarArgument" type="ArgumentIssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="InvalidScope" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="InvalidStaticInvocation" type="IssueHandlerType" minOccurs="0" />
|
2018-03-06 18:19:50 +01:00
|
|
|
<xs:element name="InvalidStringClass" type="IssueHandlerType" minOccurs="0" />
|
2019-01-25 21:31:17 +01:00
|
|
|
<xs:element name="InvalidTemplateParam" type="FunctionIssueHandlerType" minOccurs="0" />
|
2018-09-21 17:35:51 +02:00
|
|
|
<xs:element name="InvalidThrow" type="ClassIssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="InvalidToString" type="IssueHandlerType" minOccurs="0" />
|
2021-02-07 04:10:05 +01:00
|
|
|
<xs:element name="InvalidTraversableImplementation" type="ClassIssueHandlerType" minOccurs="0" />
|
2020-08-17 04:53:53 +02:00
|
|
|
<xs:element name="InvalidTypeImport" type="IssueHandlerType" minOccurs="0" />
|
2021-12-14 00:28:15 +01:00
|
|
|
<xs:element name="LessSpecificClassConstantType" type="ClassConstantIssueHandlerType" minOccurs="0" />
|
2018-04-17 20:06:27 +02:00
|
|
|
<xs:element name="LessSpecificImplementedReturnType" type="IssueHandlerType" minOccurs="0" />
|
2017-12-07 21:50:25 +01:00
|
|
|
<xs:element name="LessSpecificReturnStatement" type="IssueHandlerType" minOccurs="0" />
|
2017-03-18 17:18:17 +01:00
|
|
|
<xs:element name="LessSpecificReturnType" type="IssueHandlerType" minOccurs="0" />
|
2017-12-17 17:09:31 +01:00
|
|
|
<xs:element name="LoopInvalidation" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="MethodSignatureMismatch" type="IssueHandlerType" minOccurs="0" />
|
2018-04-21 22:52:33 +02:00
|
|
|
<xs:element name="MethodSignatureMustOmitReturnType" type="IssueHandlerType" minOccurs="0" />
|
2022-01-19 12:20:50 +01:00
|
|
|
<xs:element name="MethodSignatureMustProvideReturnType" type="IssueHandlerType" minOccurs="0" />
|
2018-01-05 18:11:12 +01:00
|
|
|
<xs:element name="MismatchingDocblockParamType" type="IssueHandlerType" minOccurs="0" />
|
2020-12-29 17:36:54 +01:00
|
|
|
<xs:element name="MismatchingDocblockPropertyType" type="IssueHandlerType" minOccurs="0" />
|
2018-01-05 18:11:12 +01:00
|
|
|
<xs:element name="MismatchingDocblockReturnType" type="IssueHandlerType" minOccurs="0" />
|
2018-01-29 02:03:47 +01:00
|
|
|
<xs:element name="MissingClosureParamType" type="IssueHandlerType" minOccurs="0" />
|
2017-01-16 07:22:36 +01:00
|
|
|
<xs:element name="MissingClosureReturnType" type="IssueHandlerType" minOccurs="0" />
|
2017-01-27 07:23:12 +01:00
|
|
|
<xs:element name="MissingConstructor" type="IssueHandlerType" minOccurs="0" />
|
2018-02-17 17:36:20 +01:00
|
|
|
<xs:element name="MissingDependency" type="IssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="MissingDocblockType" type="IssueHandlerType" minOccurs="0" />
|
2017-10-29 22:36:02 +01:00
|
|
|
<xs:element name="MissingFile" type="IssueHandlerType" minOccurs="0" />
|
2019-09-22 04:56:40 +02:00
|
|
|
<xs:element name="MissingImmutableAnnotation" type="IssueHandlerType" minOccurs="0" />
|
2018-01-29 02:03:47 +01:00
|
|
|
<xs:element name="MissingParamType" type="IssueHandlerType" minOccurs="0" />
|
2020-09-01 15:21:03 +02:00
|
|
|
<xs:element name="MissingPropertyType" type="PropertyIssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="MissingReturnType" type="IssueHandlerType" minOccurs="0" />
|
2019-01-24 23:55:03 +01:00
|
|
|
<xs:element name="MissingTemplateParam" type="IssueHandlerType" minOccurs="0" />
|
2018-06-22 07:13:49 +02:00
|
|
|
<xs:element name="MissingThrowsDocblock" type="IssueHandlerType" minOccurs="0" />
|
2019-04-26 00:02:19 +02:00
|
|
|
<xs:element name="MixedArgument" type="ArgumentIssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="MixedArgumentTypeCoercion" type="ArgumentIssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="MixedArrayAccess" type="IssueHandlerType" minOccurs="0" />
|
2017-11-19 18:33:43 +01:00
|
|
|
<xs:element name="MixedArrayAssignment" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="MixedArrayOffset" type="IssueHandlerType" minOccurs="0" />
|
2019-04-26 00:02:19 +02:00
|
|
|
<xs:element name="MixedArrayTypeCoercion" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="MixedAssignment" type="IssueHandlerType" minOccurs="0" />
|
2020-05-18 23:20:57 +02:00
|
|
|
<xs:element name="MixedClone" type="ArgumentIssueHandlerType" minOccurs="0" />
|
2019-02-10 22:15:52 +01:00
|
|
|
<xs:element name="MixedFunctionCall" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="MixedInferredReturnType" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="MixedMethodCall" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="MixedOperand" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="MixedPropertyAssignment" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="MixedPropertyFetch" type="IssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="MixedPropertyTypeCoercion" type="PropertyIssueHandlerType" minOccurs="0" />
|
2018-01-05 03:46:51 +01:00
|
|
|
<xs:element name="MixedReturnStatement" type="IssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="MixedReturnTypeCoercion" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="MixedStringOffsetAssignment" type="IssueHandlerType" minOccurs="0" />
|
2018-01-05 06:19:35 +01:00
|
|
|
<xs:element name="MoreSpecificImplementedParamType" type="IssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="MoreSpecificReturnType" type="IssueHandlerType" minOccurs="0" />
|
2020-02-22 16:04:38 +01:00
|
|
|
<xs:element name="MutableDependency" type="PropertyIssueHandlerType" minOccurs="0" />
|
2021-03-23 00:58:22 +01:00
|
|
|
<xs:element name="NamedArgumentNotAllowed" type="ArgumentIssueHandlerType" minOccurs="0" />
|
2021-11-06 21:22:38 +01:00
|
|
|
<xs:element name="NoEnumProperties" type="ClassIssueHandlerType" minOccurs="0" />
|
2019-01-23 23:41:15 +01:00
|
|
|
<xs:element name="NoInterfaceProperties" type="ClassIssueHandlerType" minOccurs="0" />
|
2021-02-07 06:52:29 +01:00
|
|
|
<xs:element name="NonInvariantDocblockPropertyType" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="NonInvariantPropertyType" type="IssueHandlerType" minOccurs="0" />
|
2021-12-14 00:28:15 +01:00
|
|
|
<xs:element name="NonStaticSelfCall" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="NoValue" type="IssueHandlerType" minOccurs="0" />
|
2018-01-05 03:46:51 +01:00
|
|
|
<xs:element name="NullableReturnStatement" type="IssueHandlerType" minOccurs="0" />
|
2019-04-26 00:02:19 +02:00
|
|
|
<xs:element name="NullArgument" type="ArgumentIssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="NullArrayAccess" type="IssueHandlerType" minOccurs="0" />
|
2017-12-04 17:20:31 +01:00
|
|
|
<xs:element name="NullArrayOffset" type="IssueHandlerType" minOccurs="0" />
|
2017-04-08 17:38:06 +02:00
|
|
|
<xs:element name="NullFunctionCall" type="IssueHandlerType" minOccurs="0" />
|
2017-05-22 17:59:58 +02:00
|
|
|
<xs:element name="NullIterator" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="NullOperand" type="IssueHandlerType" minOccurs="0" />
|
2019-04-26 00:02:19 +02:00
|
|
|
<xs:element name="NullPropertyAssignment" type="PropertyIssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="NullPropertyFetch" type="PropertyIssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="NullReference" type="IssueHandlerType" minOccurs="0" />
|
2022-02-14 00:19:25 +01:00
|
|
|
<xs:element name="OverriddenFinalConstant" type="ClassConstantIssueHandlerType" minOccurs="0" />
|
2021-12-14 00:28:15 +01:00
|
|
|
<xs:element name="OverriddenInterfaceConstant" type="ClassConstantIssueHandlerType" minOccurs="0" />
|
2017-01-13 18:03:22 +01:00
|
|
|
<xs:element name="OverriddenMethodAccess" type="IssueHandlerType" minOccurs="0" />
|
2019-04-26 00:02:19 +02:00
|
|
|
<xs:element name="OverriddenPropertyAccess" type="PropertyIssueHandlerType" minOccurs="0" />
|
2017-04-02 21:26:10 +02:00
|
|
|
<xs:element name="ParadoxicalCondition" type="IssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="ParamNameMismatch" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="ParentNotFound" type="IssueHandlerType" minOccurs="0" />
|
2021-12-14 00:28:15 +01:00
|
|
|
<xs:element name="PluginIssue" type="PluginIssueHandlerType" minOccurs="0" />
|
2019-08-20 18:06:02 +02:00
|
|
|
<xs:element name="PossibleRawObjectIteration" type="IssueHandlerType" minOccurs="0" />
|
2019-04-26 00:02:19 +02:00
|
|
|
<xs:element name="PossiblyFalseArgument" type="ArgumentIssueHandlerType" minOccurs="0" />
|
2018-03-21 03:59:22 +01:00
|
|
|
<xs:element name="PossiblyFalseIterator" type="IssueHandlerType" minOccurs="0" />
|
2018-03-18 21:39:34 +01:00
|
|
|
<xs:element name="PossiblyFalseOperand" type="IssueHandlerType" minOccurs="0" />
|
2019-04-26 00:02:19 +02:00
|
|
|
<xs:element name="PossiblyFalsePropertyAssignmentValue" type="PropertyIssueHandlerType" minOccurs="0" />
|
2017-10-23 18:01:36 +02:00
|
|
|
<xs:element name="PossiblyFalseReference" type="IssueHandlerType" minOccurs="0" />
|
2019-04-26 00:02:19 +02:00
|
|
|
<xs:element name="PossiblyInvalidArgument" type="ArgumentIssueHandlerType" minOccurs="0" />
|
2017-11-12 03:22:11 +01:00
|
|
|
<xs:element name="PossiblyInvalidArrayAccess" type="IssueHandlerType" minOccurs="0" />
|
2017-11-19 18:33:43 +01:00
|
|
|
<xs:element name="PossiblyInvalidArrayAssignment" type="IssueHandlerType" minOccurs="0" />
|
2017-11-16 06:27:11 +01:00
|
|
|
<xs:element name="PossiblyInvalidArrayOffset" type="IssueHandlerType" minOccurs="0" />
|
2019-03-17 22:10:51 +01:00
|
|
|
<xs:element name="PossiblyInvalidCast" type="IssueHandlerType" minOccurs="0" />
|
2020-05-18 22:22:50 +02:00
|
|
|
<xs:element name="PossiblyInvalidClone" type="IssueHandlerType" minOccurs="0" />
|
2021-05-28 15:47:39 +02:00
|
|
|
<xs:element name="PossiblyInvalidDocblockTag" type="IssueHandlerType" minOccurs="0" />
|
2018-01-01 18:00:02 +01:00
|
|
|
<xs:element name="PossiblyInvalidFunctionCall" type="IssueHandlerType" minOccurs="0" />
|
2018-03-21 03:59:22 +01:00
|
|
|
<xs:element name="PossiblyInvalidIterator" type="IssueHandlerType" minOccurs="0" />
|
2017-11-15 17:34:40 +01:00
|
|
|
<xs:element name="PossiblyInvalidMethodCall" type="IssueHandlerType" minOccurs="0" />
|
2018-03-18 21:39:34 +01:00
|
|
|
<xs:element name="PossiblyInvalidOperand" type="IssueHandlerType" minOccurs="0" />
|
2017-11-15 17:34:40 +01:00
|
|
|
<xs:element name="PossiblyInvalidPropertyAssignment" type="IssueHandlerType" minOccurs="0" />
|
2018-05-11 06:07:41 +02:00
|
|
|
<xs:element name="PossiblyInvalidPropertyAssignmentValue" type="PropertyIssueHandlerType" minOccurs="0" />
|
2019-04-26 00:02:19 +02:00
|
|
|
<xs:element name="PossiblyInvalidPropertyFetch" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="PossiblyNullArgument" type="ArgumentIssueHandlerType" minOccurs="0" />
|
2017-02-11 23:58:41 +01:00
|
|
|
<xs:element name="PossiblyNullArrayAccess" type="IssueHandlerType" minOccurs="0" />
|
2017-11-20 22:19:40 +01:00
|
|
|
<xs:element name="PossiblyNullArrayAssignment" type="IssueHandlerType" minOccurs="0" />
|
2017-12-04 17:20:31 +01:00
|
|
|
<xs:element name="PossiblyNullArrayOffset" type="IssueHandlerType" minOccurs="0" />
|
2017-04-08 17:38:06 +02:00
|
|
|
<xs:element name="PossiblyNullFunctionCall" type="IssueHandlerType" minOccurs="0" />
|
2017-05-22 17:59:58 +02:00
|
|
|
<xs:element name="PossiblyNullIterator" type="IssueHandlerType" minOccurs="0" />
|
2017-02-11 23:58:41 +01:00
|
|
|
<xs:element name="PossiblyNullOperand" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="PossiblyNullPropertyAssignment" type="IssueHandlerType" minOccurs="0" />
|
2018-05-11 06:07:41 +02:00
|
|
|
<xs:element name="PossiblyNullPropertyAssignmentValue" type="PropertyIssueHandlerType" minOccurs="0" />
|
2017-02-11 23:58:41 +01:00
|
|
|
<xs:element name="PossiblyNullPropertyFetch" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="PossiblyNullReference" type="IssueHandlerType" minOccurs="0" />
|
2018-04-17 20:06:27 +02:00
|
|
|
<xs:element name="PossiblyUndefinedArrayOffset" type="IssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="PossiblyUndefinedGlobalVariable" type="VariableIssueHandlerType" minOccurs="0" />
|
2019-11-11 15:59:56 +01:00
|
|
|
<xs:element name="PossiblyUndefinedIntArrayOffset" type="IssueHandlerType" minOccurs="0" />
|
2018-03-21 03:36:03 +01:00
|
|
|
<xs:element name="PossiblyUndefinedMethod" type="MethodIssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="PossiblyUndefinedStringArrayOffset" type="IssueHandlerType" minOccurs="0" />
|
2017-04-08 15:28:02 +02:00
|
|
|
<xs:element name="PossiblyUndefinedVariable" type="IssueHandlerType" minOccurs="0" />
|
2018-03-21 03:36:03 +01:00
|
|
|
<xs:element name="PossiblyUnusedMethod" type="MethodIssueHandlerType" minOccurs="0" />
|
2017-12-29 23:27:16 +01:00
|
|
|
<xs:element name="PossiblyUnusedParam" type="IssueHandlerType" minOccurs="0" />
|
2018-05-11 06:07:41 +02:00
|
|
|
<xs:element name="PossiblyUnusedProperty" type="PropertyIssueHandlerType" minOccurs="0" />
|
2021-06-10 20:18:15 +02:00
|
|
|
<xs:element name="PossiblyUnusedReturnValue" type="IssueHandlerType" minOccurs="0" />
|
2018-05-11 06:07:41 +02:00
|
|
|
<xs:element name="PropertyNotSetInConstructor" type="PropertyIssueHandlerType" minOccurs="0" />
|
2019-04-26 00:02:19 +02:00
|
|
|
<xs:element name="PropertyTypeCoercion" type="PropertyIssueHandlerType" minOccurs="0" />
|
2017-11-15 04:55:48 +01:00
|
|
|
<xs:element name="RawObjectIteration" type="IssueHandlerType" minOccurs="0" />
|
2020-12-01 23:25:45 +01:00
|
|
|
<xs:element name="RedundantCast" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="RedundantCastGivenDocblockType" type="IssueHandlerType" minOccurs="0" />
|
2017-11-28 06:46:41 +01:00
|
|
|
<xs:element name="RedundantCondition" type="IssueHandlerType" minOccurs="0" />
|
2018-02-07 21:20:47 +01:00
|
|
|
<xs:element name="RedundantConditionGivenDocblockType" type="IssueHandlerType" minOccurs="0" />
|
2021-12-30 12:01:25 +01:00
|
|
|
<xs:element name="RedundantFunctionCall" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="RedundantFunctionCallGivenDocblockType" type="IssueHandlerType" minOccurs="0" />
|
2020-07-25 23:27:45 +02:00
|
|
|
<xs:element name="RedundantIdentityWithTrue" type="IssueHandlerType" minOccurs="0" />
|
2021-12-14 00:28:15 +01:00
|
|
|
<xs:element name="RedundantPropertyInitializationCheck" type="IssueHandlerType" minOccurs="0" />
|
2017-02-23 06:25:28 +01:00
|
|
|
<xs:element name="ReferenceConstraintViolation" type="IssueHandlerType" minOccurs="0" />
|
2022-01-07 23:16:36 +01:00
|
|
|
<xs:element name="ReferenceReusedFromConfusingScope" type="IssueHandlerType" minOccurs="0" />
|
2017-05-21 19:48:17 +02:00
|
|
|
<xs:element name="ReservedWord" type="IssueHandlerType" minOccurs="0" />
|
2022-09-09 03:04:14 +02:00
|
|
|
<xs:element name="RiskyCast" type="IssueHandlerType" minOccurs="0" />
|
2019-09-01 23:49:37 +02:00
|
|
|
<xs:element name="StringIncrement" type="IssueHandlerType" minOccurs="0" />
|
2020-11-20 01:01:19 +01:00
|
|
|
<xs:element name="TaintedCallable" type="IssueHandlerType" minOccurs="0" />
|
2020-11-19 23:47:29 +01:00
|
|
|
<xs:element name="TaintedCookie" type="IssueHandlerType" minOccurs="0" />
|
2020-11-17 18:44:31 +01:00
|
|
|
<xs:element name="TaintedCustom" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="TaintedEval" type="IssueHandlerType" minOccurs="0" />
|
2020-11-19 23:47:29 +01:00
|
|
|
<xs:element name="TaintedFile" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="TaintedHeader" type="IssueHandlerType" minOccurs="0" />
|
2020-11-17 18:44:31 +01:00
|
|
|
<xs:element name="TaintedHtml" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="TaintedInclude" type="IssueHandlerType" minOccurs="0" />
|
2019-08-04 16:37:36 +02:00
|
|
|
<xs:element name="TaintedInput" type="IssueHandlerType" minOccurs="0" />
|
2021-06-10 23:43:04 +02:00
|
|
|
<xs:element name="TaintedLdap" type="IssueHandlerType" minOccurs="0" />
|
2020-11-17 18:44:31 +01:00
|
|
|
<xs:element name="TaintedShell" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="TaintedSql" type="IssueHandlerType" minOccurs="0" />
|
2020-11-18 06:52:48 +01:00
|
|
|
<xs:element name="TaintedSSRF" type="IssueHandlerType" minOccurs="0" />
|
2020-11-17 18:44:31 +01:00
|
|
|
<xs:element name="TaintedSystemSecret" type="IssueHandlerType" minOccurs="0" />
|
2021-06-10 23:43:04 +02:00
|
|
|
<xs:element name="TaintedTextWithQuotes" type="IssueHandlerType" minOccurs="0" />
|
2020-11-17 18:44:31 +01:00
|
|
|
<xs:element name="TaintedUnserialize" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="TaintedUserSecret" type="IssueHandlerType" minOccurs="0" />
|
2019-04-26 00:02:19 +02:00
|
|
|
<xs:element name="TooFewArguments" type="ArgumentIssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="TooManyArguments" type="ArgumentIssueHandlerType" minOccurs="0" />
|
2019-01-25 21:31:17 +01:00
|
|
|
<xs:element name="TooManyTemplateParams" type="FunctionIssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="Trace" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="TraitMethodSignatureMismatch" type="IssueHandlerType" minOccurs="0" />
|
2017-04-06 21:36:22 +02:00
|
|
|
<xs:element name="TypeDoesNotContainNull" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="TypeDoesNotContainType" type="IssueHandlerType" minOccurs="0" />
|
2019-03-24 21:17:14 +01:00
|
|
|
<xs:element name="UncaughtThrowInGlobalScope" type="IssueHandlerType" minOccurs="0" />
|
2020-10-24 06:10:22 +02:00
|
|
|
<xs:element name="UndefinedAttributeClass" type="ClassIssueHandlerType" minOccurs="0" />
|
2018-03-21 03:36:03 +01:00
|
|
|
<xs:element name="UndefinedClass" type="ClassIssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="UndefinedConstant" type="IssueHandlerType" minOccurs="0" />
|
2019-05-16 00:41:26 +02:00
|
|
|
<xs:element name="UndefinedDocblockClass" type="ClassIssueHandlerType" minOccurs="0" />
|
2018-03-21 03:36:03 +01:00
|
|
|
<xs:element name="UndefinedFunction" type="FunctionIssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="UndefinedGlobalVariable" type="VariableIssueHandlerType" minOccurs="0" />
|
2019-03-07 17:16:40 +01:00
|
|
|
<xs:element name="UndefinedInterface" type="ClassIssueHandlerType" minOccurs="0" />
|
2019-01-13 19:07:53 +01:00
|
|
|
<xs:element name="UndefinedInterfaceMethod" type="MethodIssueHandlerType" minOccurs="0" />
|
2020-01-06 20:23:33 +01:00
|
|
|
<xs:element name="UndefinedMagicMethod" type="MethodIssueHandlerType" minOccurs="0" />
|
2020-01-06 03:58:18 +01:00
|
|
|
<xs:element name="UndefinedMagicPropertyAssignment" type="PropertyIssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="UndefinedMagicPropertyFetch" type="PropertyIssueHandlerType" minOccurs="0" />
|
2018-03-21 03:36:03 +01:00
|
|
|
<xs:element name="UndefinedMethod" type="MethodIssueHandlerType" minOccurs="0" />
|
2018-05-11 06:07:41 +02:00
|
|
|
<xs:element name="UndefinedPropertyAssignment" type="PropertyIssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="UndefinedPropertyFetch" type="PropertyIssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="UndefinedThisPropertyAssignment" type="PropertyIssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="UndefinedThisPropertyFetch" type="PropertyIssueHandlerType" minOccurs="0" />
|
2020-04-09 03:03:05 +02:00
|
|
|
<xs:element name="UndefinedTrace" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="UndefinedTrait" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="UndefinedVariable" type="IssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="UnevaluatedCode" type="IssueHandlerType" minOccurs="0" />
|
2020-09-01 04:59:47 +02:00
|
|
|
<xs:element name="UnhandledMatchCondition" type="IssueHandlerType" minOccurs="0" />
|
2017-06-30 16:24:47 +02:00
|
|
|
<xs:element name="UnimplementedAbstractMethod" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="UnimplementedInterfaceMethod" type="IssueHandlerType" minOccurs="0" />
|
2019-02-13 19:32:19 +01:00
|
|
|
<xs:element name="UninitializedProperty" type="PropertyIssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="UnnecessaryVarAnnotation" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="UnrecognizedExpression" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="UnrecognizedStatement" type="IssueHandlerType" minOccurs="0" />
|
2022-01-20 23:51:55 +01:00
|
|
|
<xs:element name="UnresolvableConstant" type="IssueHandlerType" minOccurs="0" />
|
2017-10-29 19:39:23 +01:00
|
|
|
<xs:element name="UnresolvableInclude" type="IssueHandlerType" minOccurs="0" />
|
2021-04-10 19:16:14 +02:00
|
|
|
<xs:element name="UnsafeGenericInstantiation" type="IssueHandlerType" minOccurs="0" />
|
2021-12-14 00:28:15 +01:00
|
|
|
<xs:element name="UnsafeInstantiation" type="IssueHandlerType" minOccurs="0" />
|
2022-05-27 00:46:20 +02:00
|
|
|
<xs:element name="UnsupportedReferenceUsage" type="IssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="UnusedClass" type="ClassIssueHandlerType" minOccurs="0" />
|
2019-03-05 21:45:09 +01:00
|
|
|
<xs:element name="UnusedClosureParam" type="IssueHandlerType" minOccurs="0" />
|
2020-11-22 17:48:05 +01:00
|
|
|
<xs:element name="UnusedConstructor" type="MethodIssueHandlerType" minOccurs="0" />
|
2021-06-17 06:40:24 +02:00
|
|
|
<xs:element name="UnusedForeachValue" type="IssueHandlerType" minOccurs="0" />
|
2019-08-13 19:15:23 +02:00
|
|
|
<xs:element name="UnusedFunctionCall" type="FunctionIssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="UnusedMethod" type="MethodIssueHandlerType" minOccurs="0" />
|
2019-08-30 22:40:32 +02:00
|
|
|
<xs:element name="UnusedMethodCall" type="MethodIssueHandlerType" minOccurs="0" />
|
2017-12-29 23:27:16 +01:00
|
|
|
<xs:element name="UnusedParam" type="IssueHandlerType" minOccurs="0" />
|
2018-05-11 06:07:41 +02:00
|
|
|
<xs:element name="UnusedProperty" type="PropertyIssueHandlerType" minOccurs="0" />
|
2019-08-18 20:27:50 +02:00
|
|
|
<xs:element name="UnusedPsalmSuppress" type="FunctionIssueHandlerType" minOccurs="0" />
|
2021-06-10 20:18:15 +02:00
|
|
|
<xs:element name="UnusedReturnValue" type="IssueHandlerType" minOccurs="0" />
|
2020-08-23 19:03:25 +02:00
|
|
|
<xs:element name="UnusedVariable" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
</xs:choice>
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2016-12-30 04:11:10 +01:00
|
|
|
</xs:complexType>
|
|
|
|
|
|
|
|
<xs:complexType name="IssueHandlerType">
|
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="errorLevel" minOccurs="0" maxOccurs="unbounded">
|
|
|
|
<xs:complexType>
|
2016-12-30 04:16:46 +01:00
|
|
|
<xs:choice maxOccurs="unbounded">
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="directory" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
<xs:element name="file" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
2016-12-30 04:16:46 +01:00
|
|
|
</xs:choice>
|
2016-12-30 04:11:10 +01:00
|
|
|
|
2021-03-25 05:27:54 +01:00
|
|
|
<xs:attribute name="type" type="ErrorLevelType" use="required" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2016-12-30 04:11:10 +01:00
|
|
|
</xs:complexType>
|
|
|
|
</xs:element>
|
|
|
|
</xs:sequence>
|
|
|
|
|
2021-03-25 05:27:54 +01:00
|
|
|
<xs:attribute name="errorLevel" type="ErrorLevelType" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2016-12-30 04:11:10 +01:00
|
|
|
</xs:complexType>
|
2018-03-21 03:36:03 +01:00
|
|
|
|
2019-01-07 14:38:56 +01:00
|
|
|
<xs:complexType name="PluginIssueHandlerType">
|
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="errorLevel" minOccurs="0" maxOccurs="unbounded">
|
|
|
|
<xs:complexType>
|
|
|
|
<xs:choice maxOccurs="unbounded">
|
|
|
|
<xs:element name="directory" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
<xs:element name="file" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
</xs:choice>
|
|
|
|
|
2021-03-25 05:27:54 +01:00
|
|
|
<xs:attribute name="type" type="ErrorLevelType" use="required" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip"/>
|
2019-01-07 14:38:56 +01:00
|
|
|
</xs:complexType>
|
|
|
|
</xs:element>
|
|
|
|
</xs:sequence>
|
|
|
|
|
2021-03-25 05:27:54 +01:00
|
|
|
<xs:attribute name="errorLevel" type="ErrorLevelType" />
|
2019-01-07 14:38:56 +01:00
|
|
|
<xs:attribute name="name" type="xs:string" use="required" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip"/>
|
2019-01-07 14:38:56 +01:00
|
|
|
</xs:complexType>
|
|
|
|
|
2018-03-21 03:36:03 +01:00
|
|
|
<xs:complexType name="MethodIssueHandlerType">
|
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="errorLevel" minOccurs="0" maxOccurs="unbounded">
|
|
|
|
<xs:complexType>
|
|
|
|
<xs:choice maxOccurs="unbounded">
|
|
|
|
<xs:element name="directory" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
<xs:element name="file" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
<xs:element name="referencedMethod" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
</xs:choice>
|
|
|
|
|
2021-03-25 05:27:54 +01:00
|
|
|
<xs:attribute name="type" type="ErrorLevelType" use="required" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2018-03-21 03:36:03 +01:00
|
|
|
</xs:complexType>
|
|
|
|
</xs:element>
|
|
|
|
</xs:sequence>
|
|
|
|
|
2021-03-25 05:27:54 +01:00
|
|
|
<xs:attribute name="errorLevel" type="ErrorLevelType" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2018-03-21 03:36:03 +01:00
|
|
|
</xs:complexType>
|
|
|
|
|
|
|
|
<xs:complexType name="FunctionIssueHandlerType">
|
2019-04-26 00:02:19 +02:00
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="errorLevel" minOccurs="0" maxOccurs="unbounded">
|
|
|
|
<xs:complexType>
|
|
|
|
<xs:choice maxOccurs="unbounded">
|
|
|
|
<xs:element name="directory" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
<xs:element name="file" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
<xs:element name="referencedFunction" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
</xs:choice>
|
|
|
|
|
2021-03-25 05:27:54 +01:00
|
|
|
<xs:attribute name="type" type="ErrorLevelType" use="required" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2019-04-26 00:02:19 +02:00
|
|
|
</xs:complexType>
|
|
|
|
</xs:element>
|
|
|
|
</xs:sequence>
|
|
|
|
|
2021-03-25 05:27:54 +01:00
|
|
|
<xs:attribute name="errorLevel" type="ErrorLevelType" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2019-04-26 00:02:19 +02:00
|
|
|
</xs:complexType>
|
|
|
|
|
|
|
|
<xs:complexType name="ArgumentIssueHandlerType">
|
2018-03-21 03:36:03 +01:00
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="errorLevel" minOccurs="0" maxOccurs="unbounded">
|
|
|
|
<xs:complexType>
|
|
|
|
<xs:choice maxOccurs="unbounded">
|
|
|
|
<xs:element name="directory" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
<xs:element name="file" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
<xs:element name="referencedFunction" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
</xs:choice>
|
|
|
|
|
2021-03-25 05:27:54 +01:00
|
|
|
<xs:attribute name="type" type="ErrorLevelType" use="required" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2018-03-21 03:36:03 +01:00
|
|
|
</xs:complexType>
|
|
|
|
</xs:element>
|
|
|
|
</xs:sequence>
|
|
|
|
|
2021-03-25 05:27:54 +01:00
|
|
|
<xs:attribute name="errorLevel" type="ErrorLevelType" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2018-03-21 03:36:03 +01:00
|
|
|
</xs:complexType>
|
|
|
|
|
|
|
|
<xs:complexType name="ClassIssueHandlerType">
|
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="errorLevel" minOccurs="0" maxOccurs="unbounded">
|
|
|
|
<xs:complexType>
|
|
|
|
<xs:choice maxOccurs="unbounded">
|
|
|
|
<xs:element name="directory" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
<xs:element name="file" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
<xs:element name="referencedClass" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
</xs:choice>
|
|
|
|
|
2021-03-25 05:27:54 +01:00
|
|
|
<xs:attribute name="type" type="ErrorLevelType" use="required" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2018-03-21 03:36:03 +01:00
|
|
|
</xs:complexType>
|
|
|
|
</xs:element>
|
|
|
|
</xs:sequence>
|
|
|
|
|
2021-03-25 05:27:54 +01:00
|
|
|
<xs:attribute name="errorLevel" type="ErrorLevelType" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2018-03-21 03:36:03 +01:00
|
|
|
</xs:complexType>
|
2018-05-11 06:07:41 +02:00
|
|
|
|
|
|
|
<xs:complexType name="PropertyIssueHandlerType">
|
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="errorLevel" minOccurs="0" maxOccurs="unbounded">
|
|
|
|
<xs:complexType>
|
|
|
|
<xs:choice maxOccurs="unbounded">
|
|
|
|
<xs:element name="directory" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
<xs:element name="file" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
<xs:element name="referencedProperty" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
</xs:choice>
|
|
|
|
|
2021-03-25 05:27:54 +01:00
|
|
|
<xs:attribute name="type" type="ErrorLevelType" use="required" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2018-05-11 06:07:41 +02:00
|
|
|
</xs:complexType>
|
|
|
|
</xs:element>
|
|
|
|
</xs:sequence>
|
|
|
|
|
2021-03-25 05:27:54 +01:00
|
|
|
<xs:attribute name="errorLevel" type="ErrorLevelType" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2018-05-11 06:07:41 +02:00
|
|
|
</xs:complexType>
|
2019-03-06 00:08:41 +01:00
|
|
|
|
2022-01-20 23:51:55 +01:00
|
|
|
<xs:complexType name="ClassConstantIssueHandlerType">
|
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="errorLevel" minOccurs="0" maxOccurs="unbounded">
|
|
|
|
<xs:complexType>
|
|
|
|
<xs:choice maxOccurs="unbounded">
|
|
|
|
<xs:element name="directory" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
<xs:element name="file" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
<xs:element name="referencedConstant" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
</xs:choice>
|
|
|
|
|
|
|
|
<xs:attribute name="type" type="ErrorLevelType" use="required" />
|
|
|
|
</xs:complexType>
|
|
|
|
</xs:element>
|
|
|
|
</xs:sequence>
|
|
|
|
|
|
|
|
<xs:attribute name="errorLevel" type="ErrorLevelType" />
|
|
|
|
</xs:complexType>
|
|
|
|
|
2020-07-16 15:49:59 +02:00
|
|
|
<xs:complexType name="VariableIssueHandlerType">
|
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="errorLevel" minOccurs="0" maxOccurs="unbounded">
|
|
|
|
<xs:complexType>
|
|
|
|
<xs:choice maxOccurs="unbounded">
|
|
|
|
<xs:element name="directory" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
<xs:element name="file" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
<xs:element name="referencedVariable" minOccurs="0" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
</xs:choice>
|
|
|
|
|
2021-03-25 05:27:54 +01:00
|
|
|
<xs:attribute name="type" type="ErrorLevelType" use="required" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2020-07-16 15:49:59 +02:00
|
|
|
</xs:complexType>
|
|
|
|
</xs:element>
|
|
|
|
</xs:sequence>
|
|
|
|
|
2021-03-25 05:27:54 +01:00
|
|
|
<xs:attribute name="errorLevel" type="ErrorLevelType" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2020-07-16 15:49:59 +02:00
|
|
|
</xs:complexType>
|
|
|
|
|
2019-03-06 00:08:41 +01:00
|
|
|
<xs:complexType name="GlobalsType">
|
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="var" maxOccurs="unbounded" type="IdentifierType" />
|
|
|
|
</xs:sequence>
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2019-03-06 00:08:41 +01:00
|
|
|
</xs:complexType>
|
|
|
|
|
|
|
|
<xs:complexType name="IdentifierType">
|
|
|
|
<xs:attribute name="name" type="xs:string" use="required" />
|
|
|
|
<xs:attribute name="type" type="xs:string" use="required" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2019-03-06 00:08:41 +01:00
|
|
|
</xs:complexType>
|
2019-04-10 16:49:27 +02:00
|
|
|
|
|
|
|
<xs:complexType name="ExceptionType">
|
|
|
|
<xs:attribute name="name" type="xs:string" use="required" />
|
|
|
|
<xs:attribute name="onlyGlobalScope" type="xs:string" />
|
2022-08-23 02:24:32 +02:00
|
|
|
<xs:anyAttribute processContents="skip" />
|
2019-04-10 16:49:27 +02:00
|
|
|
</xs:complexType>
|
2021-03-25 05:27:54 +01:00
|
|
|
|
|
|
|
<xs:simpleType name="ErrorLevelType">
|
|
|
|
<xs:restriction base="xs:string">
|
|
|
|
<xs:enumeration value="error"/>
|
|
|
|
<xs:enumeration value="info"/>
|
|
|
|
<xs:enumeration value="suppress"/>
|
|
|
|
</xs:restriction>
|
|
|
|
</xs:simpleType>
|
2021-07-19 19:40:17 +02:00
|
|
|
|
|
|
|
<xs:simpleType name="TriggerErrorExitsType">
|
|
|
|
<xs:restriction base="xs:string">
|
|
|
|
<xs:enumeration value="default"/>
|
2021-07-20 23:53:04 +02:00
|
|
|
<xs:enumeration value="never"/>
|
2021-07-19 19:40:17 +02:00
|
|
|
<xs:enumeration value="always"/>
|
|
|
|
</xs:restriction>
|
|
|
|
</xs:simpleType>
|
2021-12-09 23:47:01 +01:00
|
|
|
|
|
|
|
<xs:complexType name="ExtensionsType">
|
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="extension" maxOccurs="unbounded" type="ExtensionAttributeType" />
|
|
|
|
</xs:sequence>
|
|
|
|
</xs:complexType>
|
|
|
|
|
|
|
|
<xs:simpleType name="ExtensionType">
|
|
|
|
<xs:restriction base="xs:string">
|
2022-12-21 13:33:26 +01:00
|
|
|
<xs:enumeration value="apcu"/>
|
2021-12-09 23:47:01 +01:00
|
|
|
<xs:enumeration value="decimal"/>
|
|
|
|
<xs:enumeration value="dom"/>
|
|
|
|
<xs:enumeration value="ds"/>
|
2022-12-21 13:33:26 +01:00
|
|
|
<xs:enumeration value="ffi"/>
|
2021-12-09 23:47:01 +01:00
|
|
|
<xs:enumeration value="geos"/>
|
|
|
|
<xs:enumeration value="gmp"/>
|
|
|
|
<xs:enumeration value="mongodb"/>
|
|
|
|
<xs:enumeration value="mysqli"/>
|
|
|
|
<xs:enumeration value="pdo"/>
|
2022-12-21 13:33:26 +01:00
|
|
|
<xs:enumeration value="random"/>
|
|
|
|
<xs:enumeration value="redis"/>
|
2022-06-22 08:15:43 +02:00
|
|
|
<xs:enumeration value="simplexml"/>
|
2021-12-09 23:47:01 +01:00
|
|
|
<xs:enumeration value="soap"/>
|
|
|
|
<xs:enumeration value="xdebug"/>
|
|
|
|
</xs:restriction>
|
|
|
|
</xs:simpleType>
|
|
|
|
|
|
|
|
<xs:complexType name="ExtensionAttributeType">
|
|
|
|
<xs:attribute name="name" type="ExtensionType" use="required" />
|
|
|
|
</xs:complexType>
|
2016-12-30 04:11:10 +01:00
|
|
|
</xs:schema>
|