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" />
2021-11-03 19:14:58 +01:00
<xs:element name= "exitFunctions" type= "ExitFunctionsType" minOccurs= "0" maxOccurs= "1" >
<xs:annotation >
<!-- note: for PHPStorm to mark the attribute as deprecated the doc entry has to be *single line* and start with the word `deprecated` -->
<xs:documentation xml:lang= "en" >
Deprecated. Replaced by documenting never as a return type. It is going to be removed in Psalm 5.
</xs:documentation>
</xs:annotation>
</xs:element>
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" />
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-01-19 14:01:08 +01: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" />
2021-06-07 16:46:26 +02:00
<xs:attribute name= "allowCoercionFromStringToClassConst" type= "xs:boolean" default= "false" >
<xs:annotation >
<!-- note: for PHPStorm to mark the attribute as deprecated the doc entry has to be *single line* and start with the word `deprecated` -->
<xs:documentation xml:lang= "en" >
Deprecated. Has no effect since Psalm 3 and is going to be removed in Psalm 5.
</xs:documentation>
</xs:annotation>
</xs:attribute>
2019-10-25 16:07:52 +02:00
<xs:attribute name= "allowFileIncludes" type= "xs:boolean" default= "true" />
2021-10-19 23:37:35 +02:00
<xs:attribute name= "allowPhpStormGenerics" type= "xs:boolean" default= "false" >
<xs:annotation >
<!-- note: for PHPStorm to mark the attribute as deprecated the doc entry has to be *single line* and start with the word `deprecated` -->
<xs:documentation xml:lang= "en" >
Deprecated. PHPStorm now supports generics for the most part and @psalm- annotations can be used
</xs:documentation>
</xs:annotation>
</xs:attribute>
2019-10-25 16:07:52 +02:00
<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" />
2021-11-12 13:19:24 +01:00
<xs:attribute name= "forbidEcho" type= "xs:boolean" default= "false" >
<xs:annotation >
<xs:documentation xml:lang= "en" >
Deprecated. Will be replaced by adding echo to forbiddenFunctions in Psalm 5.
</xs:documentation>
</xs:annotation>
</xs:attribute>
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= "loadXdebugStub" type= "xs:boolean" >
<xs:annotation >
<xs:documentation xml:lang= "en" >
Default is runtime-specific: if not present, Psalm will only load the Xdebug stub if psalm has unloaded the extension.
</xs:documentation>
2022-01-22 23:03:35 +01:00
<!-- note: for PHPStorm to mark the attribute as deprecated the doc entry has to be *single line* and start with the word `deprecated` -->
<xs:documentation xml:lang= "en" >
Deprecated. In Psalm 5 extensions will be loaded based on composer.json and overridden with enableExtensions/disableExtensions.
</xs:documentation>
2019-10-25 16:07:52 +02:00
</xs:annotation>
</xs:attribute>
<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-02-12 09:30:37 +01:00
<xs:attribute name= "totallyTyped" type= "xs:boolean" default= "false" >
<xs:annotation >
<xs:documentation xml:lang= "en" >
Setting `totallyTyped` to `"true"` is equivalent to setting `errorLevel` to `"1"`. Setting `totallyTyped` to `"false"` is equivalent to setting `errorLevel` to `"2"` and `reportMixedIssues` to `"false"`
</xs:documentation>
<!-- note: for PHPStorm to mark the attribute as deprecated the doc entry has to be *single line* and start with the word `deprecated` -->
<xs:documentation xml:lang= "en" >
Deprecated. Replaced by `errorLevel` and `reportMixedIssues`.
</xs:documentation>
</xs:annotation>
</xs:attribute>
2022-01-19 14:20:13 +01: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" />
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>
2021-09-21 21:15:15 +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>
2021-09-21 21:15:15 +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" />
2021-09-21 21:15:15 +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" />
</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" />
2021-09-21 21:15:15 +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" />
2018-08-29 21:10:56 +02:00
<xs:attribute name= "useStrictTypes" type= "xs:string" />
2021-09-21 21:15:15 +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>
2021-09-21 21:15:15 +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>
2021-09-21 21:15:15 +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>
2021-09-21 21:15:15 +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>
2021-09-21 21:15:15 +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>
2021-09-21 21:15:15 +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>
2021-09-21 21:15:15 +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" />
</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" />
</xs:complexType>
</xs:element>
</xs:choice>
2021-08-03 21:39:41 +02:00
<xs:anyAttribute />
2016-12-30 04:11:10 +01:00
</xs:complexType>
<xs:complexType name= "IssueHandlersType" >
<xs:choice minOccurs= "0" maxOccurs= "unbounded" >
2019-01-07 14:38:56 +01:00
<xs:element name= "PluginIssue" type= "PluginIssueHandlerType" minOccurs= "0" />
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" />
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" />
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" />
2018-09-18 23:08:32 +02:00
<xs:element name= "ForbiddenEcho" 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" />
2017-01-16 18:59:09 +01:00
<xs:element name= "InvalidClone" type= "IssueHandlerType" 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" />
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" />
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" />
2016-12-31 15:20:10 +01:00
<xs:element name= "NonStaticSelfCall" type= "IssueHandlerType" minOccurs= "0" />
2020-08-23 19:03:25 +02:00
<xs:element name= "NoValue" type= "IssueHandlerType" 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" />
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" />
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" />
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-11-29 17:57:20 +01:00
<xs:element name= "RedundantPropertyInitializationCheck" type= "IssueHandlerType" minOccurs= "0" />
2020-07-25 23:27:45 +02:00
<xs:element name= "RedundantIdentityWithTrue" type= "IssueHandlerType" minOccurs= "0" />
2017-02-23 06:25:28 +01:00
<xs:element name= "ReferenceConstraintViolation" type= "IssueHandlerType" minOccurs= "0" />
2017-05-21 19:48:17 +02:00
<xs:element name= "ReservedWord" 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" />
2017-10-29 19:39:23 +01:00
<xs:element name= "UnresolvableInclude" type= "IssueHandlerType" minOccurs= "0" />
2020-08-06 01:39:27 +02:00
<xs:element name= "UnsafeInstantiation" type= "IssueHandlerType" minOccurs= "0" />
2021-04-10 19:16:14 +02:00
<xs:element name= "UnsafeGenericInstantiation" 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>
2021-08-03 21:39:41 +02:00
<xs:anyAttribute />
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" />
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" />
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" />
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" />
</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" />
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" />
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" />
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" />
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" />
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" />
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" />
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" />
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" />
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" />
2018-05-11 06:07:41 +02:00
</xs:complexType>
2019-03-06 00:08:41 +01:00
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" />
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" />
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>
2021-08-03 21:39:41 +02:00
<xs:anyAttribute />
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" />
</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" />
</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>
2016-12-30 04:11:10 +01:00
</xs:schema>