<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<!--
    Copyright (C) 2021, 1C-Soft LLC and others.
   
    This program and the accompanying materials are made
    available under the terms of the Eclipse Public License 2.0
    which is available at https://www.eclipse.org/legal/epl-2.0/
   
    SPDX-License-Identifier: EPL-2.0
   
    Contributors:
        1C-Soft LLC - initial API and implementation
        Aleksandr Kapralov - issue #17, #449, #458
 -->

<plugin>
   <extension
         point="com.e1c.g5.v8.dt.check.checks">

      <category
            category="com.e1c.v8codestyle"
            description="%category.bsl.description"
            id="com.e1c.v8codestyle.bsl"
            title="%category.bsl.title">
      </category>
      <category
            category="com.e1c.v8codestyle.bsl"
            description="%category.bsl.comment.description"
            id="com.e1c.v8codestyle.bsl.comment"
            title="%category.bsl.comment.title">
      </category>
      <category
            category="com.e1c.v8codestyle.bsl"
            description="%category.bsl.strict.description"
            id="com.e1c.v8codestyle.bsl.strict"
            title="%category.bsl.strict.title">
      </category>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.AccessibilityAtClientInObjectModuleCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.StructureCtorTooManyKeysCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.FormModuleMissingPragmaCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.QueryInLoopCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.MethodTooManyPramsCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.NotifyDescriptionToServerProcedureCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.EventDataExchangeLoadCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.EmptyExceptStatementCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.NstrStringLiteralFormatCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.FormModulePragmaCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.CanonicalPragmaCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.ChangeAndValidateInsteadOfAroundCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.strict"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.strict.check.MethodParamTypeCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.strict"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.strict.check.VariableTypeCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.strict"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.strict.check.DynamicFeatureAccessTypeCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.strict"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.strict.check.DynamicFeatureAccessMethodNotFoundCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.strict"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.strict.check.SimpleStatementTypeCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.strict"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.strict.check.InvocationParamIntersectionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.strict"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.strict.check.FunctionReturnTypeCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.strict"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.strict.check.FunctionCtorReturnSectionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.ModuleStructureMethodInRegionCheck">
      </check> 
      <check
            category="com.e1c.v8codestyle.bsl.strict"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.strict.check.DocCommentFieldTypeCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.strict"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.strict.check.StructureCtorValueTypeCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.strict"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.strict.check.TypedValueAddingToUntypedCollectionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.EventHandlerBooleanParamCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.comment"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.comment.check.DocCommentUseMinusCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.comment"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.comment.check.CollectionTypeDefinitionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.comment"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.comment.check.ExportFunctionReturnSectionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.comment"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.comment.check.FieldDefinitionNameCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.comment"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.comment.check.FieldDefinitionTypeCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.comment"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.comment.check.FieldDefinitionTypeWithLinkRefCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.comment"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.comment.check.FunctionReturnSectionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.comment"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.comment.check.MultilineDescriptionEndsOnDotCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.comment"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.comment.check.MultilineDescriptionFieldSuggestionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.comment"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.comment.check.MultilineDescriptionParameterSuggestionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.comment"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.comment.check.ParametersSectionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.comment"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.comment.check.RedundantParametersSectionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.comment"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.comment.check.ProcedureReturnSectionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.comment"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.comment.check.RefLinkPartCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl.comment"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.comment.check.TypeDefinitionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.UseNonRecommendedMethodCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.RegionEmptyCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.ModuleStructureTopRegionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.ModuleEmptyMethodCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.ModuleUnusedLocalVariableCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.ModuleUnusedMethodCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.IsInRoleCheck">
      </check>
      <!-- Temporary disabling checks
      <check category="com.e1c.v8codestyle.bsl"
         class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.UndefinedMethodCheck">
      </check>
      <check category="com.e1c.v8codestyle.bsl"
         class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.UndefinedFunctionCheck">
      </check>
      <check category="com.e1c.v8codestyle.bsl"
         class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.UndefinedVariableCheck">
      </check>
      -->
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.InvocationFormEventHandlerCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.NewColorCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.ExportMethodInCommandFormModuleCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.LockOutOfTryCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.bsl.check.MissingTemporaryFileDeletionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.SelfReferenceCheck">
      </check>
      <check
           category="com.e1c.v8codestyle.bsl"
           class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.ModuleStructureEventFormRegionsCheck">
     </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.FormSelfReferenceOutdatedCheck">
      </check>
      <check
           category="com.e1c.v8codestyle.bsl"
           class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.ModuleStructureEventRegionsCheck">
     </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.CommonModuleNamedSelfReferenceCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.ManagerModuleNamedSelfReferenceCheck">
      </check>      
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.bsl.check.ServerExecutionSafeModeCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.RedundantExportMethodCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.bsl.check.CommitTransactionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.bsl.check.RollbackTransactionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.bsl.check.BeginTransactionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.AttachableEventHandlerNameCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.ModuleStructureInitCodeInRegionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.ModuleStructureVariablesInRegionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.bsl.check.CommonModuleMissingApiCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.PublicMethodCachingCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.ConsecutiveEmptyLinesCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.ReadingAttributesFromDataBaseCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.bsl.check.ExportVariableInObjectModuleCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.bsl.check.NewFontCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.ExtensionVariablePrefixCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.ExtensionMethodPrefixCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.DeprecatedProcedureOutsideDeprecatedRegionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.IsInRoleMethodRoleExistCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.bsl.check.MethodOptionalParameterBeforeRequiredCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.CodeAfterAsyncCallCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.UnknownFormParameterAccessCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.bsl.check.VariableNameInvalidCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.bsl.check.UsingFormDataToValueCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.ExportProcedureMissingCommentCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.comment.check.ExportProcedureCommentDescriptionCheck">
      </check>
      <check
            category="com.e1c.v8codestyle.bsl"
            class="com.e1c.v8codestyle.bsl.check.OptionalFormParameterAccessCheck">
      </check>
   </extension>
   <extension
         point="org.eclipse.core.runtime.preferences">
      <initializer
            class="com.e1c.v8codestyle.internal.bsl.ModuleStructureProviderPreferenceInitializer">
      </initializer>
   </extension>
   <extension
         point="com.e1c.v8codestyle.projectOptions">
      <provider
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.internal.bsl.ModuleStructureProjectOptionProvider">
      </provider>
      <provider
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.internal.bsl.StrictTypesProjectOptionProvider">
      </provider>
   </extension>
   <extension
         point="com.e1c.g5.v8.dt.check.fixes">
      <fix
            class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.qfix.ConsecutiveEmptyLinesFix">
      </fix>
   </extension>

</plugin>
