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" />
|
|
|
|
<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-07-13 05:26:08 +02:00
|
|
|
<xs:element name="exitFunctions" type="ExitFunctionsType" 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" />
|
2016-12-30 05:37:09 +01:00
|
|
|
</xs:choice>
|
2016-12-30 04:11:10 +01:00
|
|
|
|
|
|
|
<xs:attribute name="name" type="xs:string" />
|
|
|
|
<xs:attribute name="useDocblockTypes" type="xs:string" />
|
2018-01-13 06:32:20 +01:00
|
|
|
<xs:attribute name="useDocblockPropertyTypes" type="xs:string" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:attribute name="throwExceptionOnError" type="xs:string" />
|
|
|
|
<xs:attribute name="hideExternalErrors" type="xs:string" />
|
|
|
|
<xs:attribute name="autoloader" type="xs:string" />
|
|
|
|
<xs:attribute name="cacheDirectory" type="xs:string" />
|
|
|
|
<xs:attribute name="allowFileIncludes" type="xs:string" />
|
|
|
|
<xs:attribute name="totallyTyped" type="xs:string" />
|
|
|
|
<xs:attribute name="strictBinaryOperands" type="xs:string" />
|
2017-02-01 16:13:37 +01:00
|
|
|
<xs:attribute name="requireVoidReturnType" type="xs:string" />
|
2017-01-28 21:17:14 +01:00
|
|
|
<xs:attribute name="useAssertForType" type="xs:string" />
|
2017-04-15 03:32:14 +02:00
|
|
|
<xs:attribute name="rememberPropertyAssignmentsAfterCall" type="xs:string" />
|
2017-10-15 18:38:47 +02:00
|
|
|
<xs:attribute name="serializer" type="xs:string" />
|
2018-02-01 07:10:27 +01:00
|
|
|
<xs:attribute name="allowPhpStormGenerics" type="xs:string" />
|
2018-03-06 17:20:54 +01:00
|
|
|
<xs:attribute name="allowCoercionFromStringToClassConst" type="xs:string" />
|
|
|
|
<xs:attribute name="allowStringToStandInForClass" type="xs:string" />
|
2018-12-19 22:15:19 +01:00
|
|
|
<xs:attribute name="ignoreInternalFunctionFalseReturn" type="xs:string" />
|
|
|
|
<xs:attribute name="ignoreInternalFunctionNullReturn" type="xs:string" />
|
2018-04-22 05:08:08 +02:00
|
|
|
<xs:attribute name="usePhpDocMethodsWithoutMagicCall" type="xs:string" />
|
2018-04-28 19:05:43 +02:00
|
|
|
<xs:attribute name="memoizeMethodCallResults" type="xs:string" />
|
2018-06-01 15:07:22 +02:00
|
|
|
<xs:attribute name="hoistConstants" type="xs:string" />
|
2018-06-07 18:23:10 +02:00
|
|
|
<xs:attribute name="addParamDefaultToDocblockType" type="xs:string" />
|
2018-06-22 07:13:49 +02:00
|
|
|
<xs:attribute name="checkForThrowsDocblock" type="xs:string" />
|
2018-09-18 23:08:32 +02:00
|
|
|
<xs:attribute name="forbidEcho" type="xs:string" />
|
2018-10-30 15:32:20 +01:00
|
|
|
<xs:attribute name="errorBaseline" type="xs:string" />
|
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" />
|
|
|
|
<xs:element name="ignoreFiles" minOccurs="0" maxOccurs="1">
|
|
|
|
<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
|
|
|
</xs:complexType>
|
|
|
|
</xs:element>
|
2016-12-30 04:16:46 +01:00
|
|
|
</xs:choice>
|
2016-12-30 04:11:10 +01:00
|
|
|
</xs:complexType>
|
|
|
|
|
|
|
|
<xs:complexType name="NameAttributeType">
|
|
|
|
<xs:attribute name="name" type="xs:string" use="required" />
|
|
|
|
</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" />
|
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>
|
|
|
|
</xs:complexType>
|
|
|
|
|
|
|
|
<xs:complexType name="MockClassesType">
|
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="class" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
</xs:sequence>
|
|
|
|
</xs:complexType>
|
|
|
|
|
2018-06-22 07:13:49 +02:00
|
|
|
<xs:complexType name="ExceptionsType">
|
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="class" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
</xs:sequence>
|
|
|
|
</xs:complexType>
|
|
|
|
|
2017-02-01 01:21:33 +01:00
|
|
|
<xs:complexType name="StubsType">
|
|
|
|
<xs:sequence>
|
|
|
|
<xs:element name="file" maxOccurs="unbounded" type="NameAttributeType" />
|
|
|
|
</xs:sequence>
|
|
|
|
</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>
|
|
|
|
</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>
|
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" />
|
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" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="ContinueOutsideLoop" type="IssueHandlerType" minOccurs="0" />
|
2017-02-23 06:25:28 +01:00
|
|
|
<xs:element name="ConflictingReferenceConstraint" type="IssueHandlerType" minOccurs="0" />
|
2018-03-21 03:36:03 +01:00
|
|
|
<xs:element name="DeprecatedClass" type="ClassIssueHandlerType" minOccurs="0" />
|
2018-08-10 19:25:25 +02:00
|
|
|
<xs:element name="DeprecatedConstant" type="ClassIssueHandlerType" minOccurs="0" />
|
2018-01-23 15:09:43 +01:00
|
|
|
<xs:element name="DeprecatedInterface" type="IssueHandlerType" 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" />
|
2018-08-10 19:25:25 +02:00
|
|
|
<xs:element name="DeprecatedTrait" type="ClassIssueHandlerType" 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-02 07:20:47 +01:00
|
|
|
<xs:element name="DuplicateParam" type="IssueHandlerType" minOccurs="0" />
|
2017-01-20 05:45:21 +01:00
|
|
|
<xs:element name="DuplicateClass" type="IssueHandlerType" minOccurs="0" />
|
2019-01-02 17:18:22 +01:00
|
|
|
<xs:element name="DuplicateMethod" type="IssueHandlerType" minOccurs="0" />
|
2017-06-29 05:37:02 +02:00
|
|
|
<xs:element name="EmptyArrayAccess" type="IssueHandlerType" minOccurs="0" />
|
2018-03-18 21:39:34 +01:00
|
|
|
<xs:element name="FalseOperand" type="IssueHandlerType" minOccurs="0" />
|
2018-01-05 03:46:51 +01:00
|
|
|
<xs:element name="FalsableReturnStatement" 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" />
|
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" />
|
|
|
|
<xs:element name="InaccessibleClassConstant" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="InaccessibleMethod" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<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" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="InvalidArgument" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<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" />
|
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-31 05:40:32 +01:00
|
|
|
<xs:element name="InvalidParamDefault" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="InvalidDocblock" type="IssueHandlerType" 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" />
|
2017-04-08 15:20:32 +02:00
|
|
|
<xs:element name="InvalidMethodCall" type="IssueHandlerType" 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" />
|
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" />
|
|
|
|
<xs:element name="InvalidScalarArgument" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="InvalidScope" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="InvalidStaticInvocation" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="InvalidStaticVariable" type="IssueHandlerType" minOccurs="0" />
|
2018-03-06 18:19:50 +01:00
|
|
|
<xs:element name="InvalidStringClass" type="IssueHandlerType" 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" />
|
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" />
|
2017-01-13 19:40:20 +01:00
|
|
|
<xs:element name="MisplacedRequiredParam" type="IssueHandlerType" minOccurs="0" />
|
2018-01-05 18:11:12 +01:00
|
|
|
<xs:element name="MismatchingDocblockParamType" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<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" />
|
2017-10-29 22:36:02 +01:00
|
|
|
<xs:element name="MissingFile" type="IssueHandlerType" minOccurs="0" />
|
2018-01-29 02:03:47 +01:00
|
|
|
<xs:element name="MissingParamType" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="MissingPropertyType" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="MissingReturnType" type="IssueHandlerType" minOccurs="0" />
|
2017-11-15 03:43:31 +01:00
|
|
|
<xs:element name="MissingDocblockType" type="IssueHandlerType" minOccurs="0" />
|
2018-06-22 07:13:49 +02:00
|
|
|
<xs:element name="MissingThrowsDocblock" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="MixedArgument" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<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" />
|
|
|
|
<xs:element name="MixedAssignment" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<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" />
|
2018-01-05 03:46:51 +01:00
|
|
|
<xs:element name="MixedReturnStatement" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="MixedStringOffsetAssignment" type="IssueHandlerType" minOccurs="0" />
|
2017-11-19 19:42:48 +01:00
|
|
|
<xs:element name="MixedTypeCoercion" type="IssueHandlerType" minOccurs="0" />
|
2017-01-17 17:17:49 +01:00
|
|
|
<xs:element name="MoreSpecificReturnType" type="IssueHandlerType" minOccurs="0" />
|
2018-01-05 06:19:35 +01:00
|
|
|
<xs:element name="MoreSpecificImplementedParamType" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="NoInterfaceProperties" type="IssueHandlerType" minOccurs="0" />
|
2016-12-31 15:20:10 +01:00
|
|
|
<xs:element name="NonStaticSelfCall" type="IssueHandlerType" minOccurs="0" />
|
2018-01-05 03:46:51 +01:00
|
|
|
<xs:element name="NullableReturnStatement" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="NullArgument" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<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" />
|
|
|
|
<xs:element name="NullPropertyAssignment" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="NullPropertyFetch" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="NullReference" type="IssueHandlerType" minOccurs="0" />
|
2017-01-13 18:03:22 +01:00
|
|
|
<xs:element name="OverriddenMethodAccess" type="IssueHandlerType" minOccurs="0" />
|
2018-03-04 18:24:50 +01:00
|
|
|
<xs:element name="OverriddenPropertyAccess" type="IssueHandlerType" minOccurs="0" />
|
2017-04-02 21:26:10 +02:00
|
|
|
<xs:element name="ParadoxicalCondition" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="ParentNotFound" type="IssueHandlerType" minOccurs="0" />
|
2017-10-23 18:01:36 +02:00
|
|
|
<xs:element name="PossiblyFalseArgument" type="IssueHandlerType" 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" />
|
2018-01-10 16:56:43 +01:00
|
|
|
<xs:element name="PossiblyFalsePropertyAssignmentValue" type="IssueHandlerType" minOccurs="0" />
|
2017-10-23 18:01:36 +02:00
|
|
|
<xs:element name="PossiblyFalseReference" type="IssueHandlerType" minOccurs="0" />
|
2017-04-08 15:28:02 +02:00
|
|
|
<xs:element name="PossiblyInvalidArgument" type="IssueHandlerType" 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" />
|
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" />
|
|
|
|
<xs:element name="PossiblyInvalidPropertyFetch" type="PropertyIssueHandlerType" minOccurs="0" />
|
2017-02-11 23:58:41 +01:00
|
|
|
<xs:element name="PossiblyNullArgument" type="IssueHandlerType" minOccurs="0" />
|
|
|
|
<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" />
|
2018-03-21 03:36:03 +01:00
|
|
|
<xs:element name="PossiblyUndefinedMethod" type="MethodIssueHandlerType" minOccurs="0" />
|
2017-12-06 06:56:00 +01:00
|
|
|
<xs:element name="PossiblyUndefinedGlobalVariable" 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" />
|
|
|
|
<xs:element name="PropertyNotSetInConstructor" type="PropertyIssueHandlerType" minOccurs="0" />
|
2017-11-15 04:55:48 +01:00
|
|
|
<xs:element name="RawObjectIteration" 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" />
|
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" />
|
2018-08-16 22:49:33 +02:00
|
|
|
<xs:element name="TooFewArguments" type="FunctionIssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="TooManyArguments" type="FunctionIssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="TypeCoercion" 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" />
|
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" />
|
2018-03-21 03:36:03 +01:00
|
|
|
<xs:element name="UndefinedFunction" type="FunctionIssueHandlerType" minOccurs="0" />
|
|
|
|
<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" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="UndefinedTrait" type="IssueHandlerType" minOccurs="0" />
|
2017-12-06 06:56:00 +01:00
|
|
|
<xs:element name="UndefinedGlobalVariable" type="IssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
<xs:element name="UndefinedVariable" 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" />
|
|
|
|
<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" />
|
2017-02-12 22:49:32 +01:00
|
|
|
<xs:element name="UnevaluatedCode" type="IssueHandlerType" minOccurs="0" />
|
2017-02-08 06:28:26 +01:00
|
|
|
<xs:element name="UnusedVariable" type="IssueHandlerType" 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" />
|
2018-03-21 03:36:03 +01:00
|
|
|
<xs:element name="UnusedClass" type="ClassIssueHandlerType" minOccurs="0" />
|
|
|
|
<xs:element name="UnusedMethod" type="MethodIssueHandlerType" minOccurs="0" />
|
2016-12-30 04:11:10 +01:00
|
|
|
</xs:choice>
|
|
|
|
</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
|
|
|
|
|
|
|
<xs:attribute name="type" type="xs:string" use="required" />
|
|
|
|
</xs:complexType>
|
|
|
|
</xs:element>
|
|
|
|
</xs:sequence>
|
|
|
|
|
|
|
|
<xs:attribute name="errorLevel" type="xs:string" />
|
|
|
|
</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>
|
|
|
|
|
|
|
|
<xs:attribute name="type" type="xs:string" use="required" />
|
|
|
|
</xs:complexType>
|
|
|
|
</xs:element>
|
|
|
|
</xs:sequence>
|
|
|
|
|
|
|
|
<xs:attribute name="errorLevel" type="xs:string" />
|
|
|
|
</xs:complexType>
|
|
|
|
|
|
|
|
<xs:complexType name="FunctionIssueHandlerType">
|
|
|
|
<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>
|
|
|
|
|
|
|
|
<xs:attribute name="type" type="xs:string" use="required" />
|
|
|
|
</xs:complexType>
|
|
|
|
</xs:element>
|
|
|
|
</xs:sequence>
|
|
|
|
|
|
|
|
<xs:attribute name="errorLevel" type="xs:string" />
|
|
|
|
</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>
|
|
|
|
|
|
|
|
<xs:attribute name="type" type="xs:string" use="required" />
|
|
|
|
</xs:complexType>
|
|
|
|
</xs:element>
|
|
|
|
</xs:sequence>
|
|
|
|
|
|
|
|
<xs:attribute name="errorLevel" type="xs:string" />
|
|
|
|
</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>
|
|
|
|
|
|
|
|
<xs:attribute name="type" type="xs:string" use="required" />
|
|
|
|
</xs:complexType>
|
|
|
|
</xs:element>
|
|
|
|
</xs:sequence>
|
|
|
|
|
|
|
|
<xs:attribute name="errorLevel" type="xs:string" />
|
|
|
|
</xs:complexType>
|
2016-12-30 04:11:10 +01:00
|
|
|
</xs:schema>
|