Diagnostics¶
Used for code analysis to meet coding standards and search for possible errors.
Some of diagnostics are disabled by default. Use configuration file to enable them.
To escape individual sections of code or files from triggering diagnostics, you can use special comments of the form // BSLLS:DiagnosticKey-off
. This functionality is described in more detail in Escaping sections of code .
Implemented diagnostics¶
Total: 172
- Security Hotspot: 7
- Vulnerability: 8
- Error: 55
- Code smell: 102
Key | Name | Enabled by default | Severity | Type | Tags |
---|---|---|---|---|---|
AllFunctionPathMustHaveReturn | All execution paths of a function must have a Return statement | Yes | Major | Code smell | unpredictable badpractice suspicious |
AssignAliasFieldsInQuery | Assigning aliases to selected fields in a query | Yes | Major | Code smell | standard sql badpractice |
BadWords | Prohibited words | No | Major | Code smell | design |
BeginTransactionBeforeTryCatch | Violating transaction rules for the 'BeginTransaction' method | Yes | Major | Error | standard |
CachedPublic | Cached public methods | Yes | Major | Code smell | standard design |
CanonicalSpellingKeywords | Canonical keyword writing | Yes | Info | Code smell | standard |
CodeAfterAsyncCall | Lines of code after the asynchronous method call | No | Major | Code smell | suspicious |
CodeBlockBeforeSub | Method definitions must be placed before the module body operators | Yes | Blocker | Error | error |
CodeOutOfRegion | Code out of region | Yes | Info | Code smell | standard |
CognitiveComplexity | Cognitive complexity | Yes | Critical | Code smell | brainoverload |
CommandModuleExportMethods | Export methods in command and general command modules | Yes | Info | Code smell | standard clumsy |
CommentedCode | Commented out code | Yes | Minor | Code smell | standard badpractice |
CommitTransactionOutsideTryCatch | Violating transaction rules for the 'CommitTransaction' method | Yes | Major | Error | standard |
CommonModuleAssign | CommonModuleAssign | Yes | Blocker | Error | error |
CommonModuleInvalidType | Common module invalid type | Yes | Major | Error | standard unpredictable design |
CommonModuleMissingAPI | Common module should have a programming interface | Yes | Minor | Code smell | brainoverload suspicious |
CommonModuleNameCached | Missed postfix "Cached" | Yes | Major | Code smell | standard badpractice unpredictable |
CommonModuleNameClient | Missed postfix "Client" | Yes | Minor | Code smell | standard badpractice unpredictable |
CommonModuleNameClientServer | Missed postfix "ClientServer" | Yes | Major | Code smell | standard badpractice unpredictable |
CommonModuleNameFullAccess | Missed postfix "FullAccess" | Yes | Major | Security Hotspot | standard badpractice unpredictable |
CommonModuleNameGlobal | Missed postfix "Global" | Yes | Major | Code smell | standard badpractice brainoverload |
CommonModuleNameGlobalClient | Global module with postfix "Client" | Yes | Major | Code smell | standard |
CommonModuleNameServerCall | Missed postfix "ServerCall" | Yes | Minor | Code smell | standard badpractice unpredictable |
CommonModuleNameWords | Unrecommended common module name | Yes | Info | Code smell | standard |
CompilationDirectiveLost | Methods compilation directive | Yes | Major | Code smell | standard unpredictable |
CompilationDirectiveNeedLess | Needless compilation directive | Yes | Major | Code smell | clumsy standard unpredictable |
ConsecutiveEmptyLines | Consecutive empty lines | Yes | Info | Code smell | badpractice |
CrazyMultilineString | Crazy multiline literals | Yes | Major | Code smell | badpractice suspicious unpredictable |
CreateQueryInCycle | Execution query on cycle | Yes | Critical | Error | performance |
CyclomaticComplexity | Cyclomatic complexity | Yes | Critical | Code smell | brainoverload |
DataExchangeLoading | There is no check for the attribute DataExchange.Load in the object's event handler | Yes | Critical | Error | standard badpractice unpredictable |
DeletingCollectionItem | Deleting an item when iterating through collection using the operator "For each ... In ... Do" | Yes | Major | Error | standard error |
DenyIncompleteValues | Deny incomplete values for dimensions | No | Major | Code smell | badpractice |
DeprecatedAttributes8312 | Deprecated 8.3.12 platform features. | Yes | Info | Code smell | deprecated |
DeprecatedCurrentDate | Using of the deprecated method "CurrentDate" | Yes | Major | Error | standard deprecated unpredictable |
DeprecatedFind | Using of the deprecated method "Find" | Yes | Minor | Code smell | deprecated |
DeprecatedMessage | Restriction on the use of deprecated "Message" method | Yes | Minor | Code smell | standard deprecated |
DeprecatedMethodCall | Deprecated methods should not be used | Yes | Minor | Code smell | deprecated design |
DeprecatedMethods8310 | Deprecated client application method. | Yes | Info | Code smell | deprecated |
DeprecatedMethods8317 | Using of deprecated platform 8.3.17 global methods | Yes | Info | Code smell | deprecated |
DeprecatedTypeManagedForm | Deprecated ManagedForm type | Yes | Info | Code smell | standard deprecated |
DisableSafeMode | Disable safe mode | Yes | Major | Vulnerability | suspicious |
DuplicateRegion | Duplicate regions | Yes | Info | Code smell | standard |
DuplicateStringLiteral | Duplicate string literal | Yes | Minor | Code smell | badpractice |
DuplicatedInsertionIntoCollection | Duplicate adding or pasting a value to a collection | Yes | Major | Code smell | brainoverload suspicious badpractice |
EmptyCodeBlock | Empty code block | Yes | Major | Code smell | badpractice suspicious |
EmptyRegion | The region should not be empty | Yes | Info | Code smell | standard |
EmptyStatement | Empty statement | Yes | Info | Code smell | badpractice |
ExcessiveAutoTestCheck | Excessive AutoTest Check | Yes | Minor | Code smell | standard deprecated |
ExecuteExternalCode | Executing of external code on the server | Yes | Critical | Vulnerability | error standard |
ExecuteExternalCodeInCommonModule | Executing of external code in a common module on the server | Yes | Critical | Security Hotspot | badpractice standard |
ExportVariables | Ban export global module variables | Yes | Major | Code smell | standard design unpredictable |
ExternalAppStarting | External applications starting | Yes | Major | Vulnerability | suspicious |
ExtraCommas | Commas without a parameter at the end of a method call | Yes | Major | Code smell | standard badpractice |
FieldsFromJoinsWithoutIsNull | No NULL checks for fields from joined tables | No | Critical | Error | sql suspicious unpredictable |
FileSystemAccess | File system access | No | Major | Vulnerability | suspicious |
ForbiddenMetadataName | Metadata object has a forbidden name | Yes | Blocker | Error | standard sql design |
FormDataToValue | FormDataToValue method call | Yes | Info | Code smell | badpractice |
FullOuterJoinQuery | Using of "FULL OUTER JOIN" in queries | Yes | Major | Code smell | sql standard performance |
FunctionNameStartsWithGet | Function name shouldn't start with "Получить" | No | Info | Code smell | standard |
FunctionOutParameter | Out function parameter | No | Major | Code smell | design |
FunctionReturnsSamePrimitive | The function always returns the same primitive value | Yes | Major | Error | design badpractice |
FunctionShouldHaveReturn | The function should have return | Yes | Major | Error | suspicious unpredictable |
GetFormMethod | GetForm method call | Yes | Major | Error | error |
GlobalContextMethodCollision8312 | Global context method names collision | Yes | Blocker | Error | error unpredictable |
IdenticalExpressions | There are identical sub-expressions to the left and to the right of the "foo" operator | Yes | Major | Error | suspicious |
IfConditionComplexity | Usage of complex expressions in the "If" condition | Yes | Minor | Code smell | brainoverload |
IfElseDuplicatedCodeBlock | Duplicated code blocks in If...Then...ElseIf... statements | Yes | Minor | Code smell | suspicious |
IfElseDuplicatedCondition | Duplicated conditions in If...Then...ElseIf... statements | Yes | Major | Code smell | suspicious |
IfElseIfEndsWithElse | Else...The...ElseIf... statement should end with Else branch | Yes | Major | Code smell | badpractice |
IncorrectLineBreak | Incorrect expression line break | Yes | Info | Code smell | standard badpractice |
IncorrectUseLikeInQuery | Incorrect use of 'LIKE' | Yes | Major | Error | standard sql unpredictable |
IncorrectUseOfStrTemplate | Incorrect use of "StrTemplate" | Yes | Blocker | Error | brainoverload suspicious unpredictable |
InternetAccess | Referring to Internet resources | No | Major | Vulnerability | suspicious |
InvalidCharacterInFile | Invalid character | Yes | Major | Error | error standard unpredictable |
IsInRoleMethod | IsInRole global method call | Yes | Major | Code smell | error |
JoinWithSubQuery | Join with sub queries | Yes | Major | Code smell | sql standard performance |
JoinWithVirtualTable | Join with virtual table | Yes | Major | Code smell | sql standard performance |
LatinAndCyrillicSymbolInWord | Mixing Latin and Cyrillic characters in one identifier | Yes | Minor | Code smell | brainoverload suspicious |
LineLength | Line Length limit | Yes | Minor | Code smell | standard badpractice |
LogicalOrInTheWhereSectionOfQuery | Using a logical "OR" in the "WHERE" section of a query | Yes | Major | Code smell | sql performance standard |
MagicDate | Magic dates | Yes | Minor | Code smell | badpractice brainoverload |
MagicNumber | Magic numbers | Yes | Minor | Code smell | badpractice |
MetadataObjectNameLength | Metadata object names must not exceed the allowed length | Yes | Major | Error | standard |
MethodSize | Method size | Yes | Major | Code smell | badpractice |
MissedRequiredParameter | Missed a required method parameter | Yes | Major | Error | error |
MissingCodeTryCatchEx | Missing code in Raise block in "Try ... Raise ... EndTry" | Yes | Major | Error | standard badpractice |
MissingCommonModuleMethod | Referencing a missing common module method | Yes | Blocker | Error | error |
MissingEventSubscriptionHandler | Event subscription handler missing | Yes | Blocker | Error | error |
MissingParameterDescription | Method parameters description are missing | Yes | Major | Code smell | standard badpractice |
MissingReturnedValueDescription | Function returned values description is missing | Yes | Major | Code smell | standard badpractice |
MissingSpace | Missing spaces to the left or right of operators + - * / = % < > <> <= >=, keywords, and also to the right of , and ; | Yes | Info | Code smell | badpractice |
MissingTempStorageDeletion | Missing temporary storage data deletion after using | No | Critical | Code smell | standard performance badpractice |
MissingTemporaryFileDeletion | Missing temporary file deletion after using | Yes | Major | Error | badpractice standard |
MissingVariablesDescription | All variables declarations must have a description | Yes | Minor | Code smell | standard |
MultilineStringInQuery | Multi-line literal in query | Yes | Critical | Error | badpractice suspicious unpredictable |
MultilingualStringHasAllDeclaredLanguages | There is a localized text for all languages declared in the configuration | Yes | Minor | Error | error localize |
MultilingualStringUsingWithTemplate | Partially localized text is used in the StrTemplate function | Yes | Major | Error | error localize |
NestedConstructorsInStructureDeclaration | Nested constructors with parameters in structure declaration | Yes | Minor | Code smell | badpractice brainoverload |
NestedFunctionInParameters | Initialization of method and constructor parameters by calling nested methods | Yes | Minor | Code smell | standard brainoverload badpractice |
NestedStatements | Control flow statements should not be nested too deep | Yes | Critical | Code smell | badpractice brainoverload |
NestedTernaryOperator | Nested ternary operator | Yes | Major | Code smell | brainoverload |
NonExportMethodsInApiRegion | Non export methods in API regions | Yes | Major | Code smell | standard |
NonStandardRegion | Non-standard region of module | Yes | Info | Code smell | standard |
NumberOfOptionalParams | Limit number of optional parameters in method | Yes | Minor | Code smell | standard brainoverload |
NumberOfParams | Number of parameters in method | Yes | Minor | Code smell | standard brainoverload |
NumberOfValuesInStructureConstructor | Limit on the number of property values passed to the structure constructor | Yes | Minor | Code smell | standard brainoverload |
OSUsersMethod | Using method OSUsers | Yes | Critical | Security Hotspot | suspicious |
OneStatementPerLine | One statement per line | Yes | Minor | Code smell | standard design |
OrderOfParams | Order of Parameters in method | Yes | Major | Code smell | standard design |
OrdinaryAppSupport | Ordinary application support | Yes | Major | Code smell | standard unpredictable |
PairingBrokenTransaction | Violation of pairing using methods "BeginTransaction()" & "CommitTransaction()" / "RollbackTransaction()" | Yes | Major | Error | standard |
ParseError | Source code parse error | Yes | Critical | Error | error |
PrivilegedModuleMethodCall | Accessing privileged module methods | Yes | Major | Security Hotspot | suspicious |
ProcedureReturnsValue | Procedure should not return Value | Yes | Blocker | Error | error |
PublicMethodsDescription | All public methods must have a description | Yes | Info | Code smell | standard brainoverload badpractice |
QueryParseError | Query text parsing error | Yes | Major | Code smell | standard sql badpractice |
QueryToMissingMetadata | Using non-existent metadata in the query | Yes | Blocker | Error | suspicious sql |
RedundantAccessToObject | Redundant access to an object | Yes | Info | Code smell | standard clumsy |
RefOveruse | Overuse "Reference" in a query | Yes | Major | Code smell | sql performance |
RewriteMethodParameter | Rewrite method parameter | Yes | Major | Code smell | suspicious |
SameMetadataObjectAndChildNames | Same metadata object and child name | Yes | Critical | Error | standard sql design |
ScheduledJobHandler | Scheduled job handler | Yes | Critical | Error | error |
SelectTopWithoutOrderBy | Using 'SELECT TOP' without 'ORDER BY' | Yes | Major | Code smell | standard sql suspicious |
SelfAssign | Variable is assigned to itself | Yes | Major | Error | suspicious |
SelfInsertion | Insert a collection into itself | Yes | Major | Error | standard unpredictable performance |
SemicolonPresence | Statement should end with semicolon symbol ";" | Yes | Minor | Code smell | standard badpractice |
ServerSideExportFormMethod | Server-side export form method | Yes | Blocker | Error | error unpredictable suspicious |
SetPermissionsForNewObjects | The check box «Set permissions for new objects» should only be selected for the FullAccess role | Yes | Critical | Vulnerability | standard badpractice design |
SetPrivilegedMode | Using privileged mode | Yes | Major | Security Hotspot | suspicious |
SeveralCompilerDirectives | Erroneous indication of several compilation directives | Yes | Critical | Error | unpredictable error |
SpaceAtStartComment | Space at the beginning of the comment | Yes | Info | Code smell | standard |
StyleElementConstructors | Style element constructor | Yes | Minor | Error | standard badpractice |
TempFilesDir | TempFilesDir() method call | Yes | Major | Code smell | standard badpractice |
TernaryOperatorUsage | Ternary operator usage | No | Minor | Code smell | brainoverload |
ThisObjectAssign | ThisObject assign | Yes | Blocker | Error | error |
TimeoutsInExternalResources | Timeouts working with external resources | Yes | Critical | Error | unpredictable standard |
TooManyReturns | Methods should not have too many return statements | No | Minor | Code smell | brainoverload |
TransferringParametersBetweenClientAndServer | Transferring parameters between the client and the server | Yes | Major | Code smell | badpractice performance standard |
TryNumber | Cast to number of try catch block | Yes | Major | Code smell | standard |
Typo | Typo | Yes | Info | Code smell | badpractice |
UnaryPlusInConcatenation | Unary Plus sign in string concatenation | Yes | Blocker | Error | suspicious brainoverload |
UnionAll | Using keyword "UNION" in queries | Yes | Minor | Code smell | standard sql performance |
UnknownPreprocessorSymbol | Unknown preprocessor symbol | Yes | Critical | Error | standard error |
UnreachableCode | Unreachable Code | Yes | Minor | Error | design suspicious |
UnsafeSafeModeMethodCall | Unsafe SafeMode method call | Yes | Blocker | Error | deprecated error |
UnusedLocalMethod | Unused local method | Yes | Major | Code smell | standard suspicious unused |
UnusedLocalVariable | Unused local variable | Yes | Major | Code smell | brainoverload badpractice unused |
UnusedParameters | Unused parameter | Yes | Major | Code smell | design unused |
UsageWriteLogEvent | Incorrect use of the method "WriteLogEvent" | Yes | Info | Code smell | standard badpractice |
UseLessForEach | Useless collection iteration | Yes | Critical | Error | clumsy |
UseSystemInformation | Use of system information | No | Critical | Security Hotspot | suspicious |
UsingCancelParameter | Using parameter "Cancel" | Yes | Major | Code smell | standard badpractice |
UsingExternalCodeTools | Using external code tools | Yes | Critical | Security Hotspot | standard design |
UsingFindElementByString | Using FindByName, FindByCode and FindByNumber | Yes | Major | Code smell | standard badpractice performance |
UsingGoto | "goto" statement should not be used | Yes | Critical | Code smell | standard badpractice |
UsingHardcodeNetworkAddress | Using hardcode ip addresses in code | Yes | Critical | Vulnerability | standard |
UsingHardcodePath | Using hardcode file paths in code | Yes | Critical | Error | standard |
UsingHardcodeSecretInformation | Storing confidential information in code | Yes | Critical | Vulnerability | standard |
UsingLikeInQuery | Using 'LIKE' in query | No | Major | Error | sql unpredictable |
UsingModalWindows | Using modal windows | Yes | Major | Code smell | standard |
UsingObjectNotAvailableUnix | Using unavailable in Unix objects | Yes | Critical | Error | standard lockinos |
UsingServiceTag | Using service tags | Yes | Info | Code smell | badpractice |
UsingSynchronousCalls | Using synchronous calls | Yes | Major | Code smell | standard |
UsingThisForm | Using deprecated property "ThisForm" | Yes | Minor | Code smell | standard deprecated |
VirtualTableCallWithoutParameters | Virtual table call without parameters | Yes | Major | Error | sql standard performance |
WrongDataPathForFormElements | Form fields do not have a data path | Yes | Critical | Error | unpredictable |
WrongHttpServiceHandler | Missing handler for http service | Yes | Critical | Error | suspicious error |
WrongUseFunctionProceedWithCall | Wrong use of ProceedWithCall function | Yes | Blocker | Error | error suspicious |
WrongUseOfRollbackTransactionMethod | Not recommended using of RollbackTransaction method | Yes | Critical | Error | standard |
WrongWebServiceHandler | Wrong handler for web service | Yes | Critical | Error | suspicious error |
YoLetterUsage | Using Russian character "yo" ("ё") in code | Yes | Info | Code smell | standard |