Releases: integrated-application-development/sonar-delphi
Releases · integrated-application-development/sonar-delphi
1.14.0
Added
RedundantJumpanalysis rule, which flags redundant jump statements, e.g.,Continue,Exit.LoopExecutingAtMostOnceanalysis rule, which flags loop statements that can execute at most once.excludedNamesrule property to theMixedNamesrule.- API:
RepeatStatementNode::getGuardExpressionmethod. - API:
RepeatStatementNode::getStatementListmethod. - API:
CaseStatementNode::getSelectorExpressionmethod. - API:
CaseItemStatementNode::getStatementmethod.
Fixed
- Parsing errors where adjacent
>and=tokens were wrongly interpreted as the>=operator. - False-positives within assignment statements in
IndexLastListElement.
1.13.0
Added
- API:
AnonymousMethodNode::getDeclarationSectionmethod. - API:
AnonymousMethodNode::getStatementBlockmethod. - API:
AnonymousMethodNode::isEmptymethod.
Changed
- Include the global browsing path in unit import resolution.
- Reprioritize the analysis search path in the following order (highest to lowest):
- Referenced project files (
DCCReference) - Search path (
DCC_UnitSearchPath) - Debugger source path (
Debugger_DebugSourcePath) - Library path (
DelphiLibraryPath/DelphiTranslatedLibraryPath) - Browsing path (
DelphiBrowsingPath) - Standard library
- Analysis source files (
sonar.sources)
- Referenced project files (
- Empty anonymous methods are now ignored in
EmptyBlock. - Empty anonymous methods are now flagged in
EmptyRoutine.
1.12.2
Fixed
- Incorrect case-sensitive treatment of file names in coverage reports.
1.12.1
Fixed
- Various intrinsic routines had incorrect signatures around dynamic and open arrays.
- False positives around platform-dependent binary expressions in
PlatformDependentTruncation. - Incorrect type resolution around array property accesses.
1.12.0
Added
- API:
DelphiCheckContext::getUrimethod.
Fixed
- Parsing errors on semicolon-delimited generic type parameters in routine implementation headers.
- Incorrect return types for
Length,High, andLowon open/dynamic arrays depending on the compiler version and toolchain. - Name resolution failures on explicit references to default array properties with overloads on ancestor types.
1.11.0
Added
MissingRaiseanalysis rule, which flags exception constructions for whichraisehas been omitted.- API:
ProceduralType::directivesmethod. - API:
ProceduralTypeNode::getDirectivesmethod. - API:
ProceduralTypeNode::hasDirectivemethod. - API:
ProceduralTypeHeadingNode::getDirectivesmethod. - API:
AnonymousMethodNode::getAnonymousMethodHeadingmethod. - API:
AnonymousMethodNode::getDirectivesmethod. - API:
AnonymousMethodNode::hasDirectivemethod. - API:
AnonymousMethodHeadingNodenode type. - API:
DelphiTokenType.ANONYMOUS_METHODtoken type. - API:
DelphiTokenType.ANONYMOUS_METHOD_HEADINGtoken type.
Fixed
- Parsing errors on
implementationkeywords nested in conditional branches. - Parsing errors on anonymous methods with routine directives (like calling conventions).
IndexOutOfBoundsExceptionerrors around procedural types declared withvarargsinVariableInitialization.
1.10.0
Added
FullyQualifiedImportanalysis rule, which flags non-fully qualified imports.- API:
UnitImportNameDeclaration::isAliasmethod.
Changed
- Non-trivial
inheritedexpressions are excluded inRedundantParentheses.
Fixed
- False positives around const array literals in
RedundantParentheses.
1.9.0
Added
- API:
CaseItemStatementNode::getExpressionsmethod.
Changed
- Improve type inference around unsigned integer literals.
- Improve type inference around array constructors containing integer literals.
- Improve type inference around real expressions.
- Parentheses enclosing a primary expression are considered redundant in
RedundantParentheses. outparameters are treated as uninitialized at the start of a routine inVariableInitialization.
Fixed
- Name resolution errors around alias ancestor types.
- Parsing errors around partial
asmblocks blocks in conditional branches. - False positives around case items with multiple values in
CaseStatementSize.
1.8.0
Added
- "Correct to (correct case)" quick fix for
LowercaseKeyword. - API:
PropertyNameDeclaration::getImplementedTypesmethod. - API:
PropertyNode::getDefaultSpecifiermethod. - API:
PropertyNode::getImplementsSpecifiermethod. - API:
PropertyNode::getIndexSpecifiermethod. - API:
PropertyNode::getStoredSpecifiermethod. - API:
PropertyDefaultSpecifierNodenode type. - API:
PropertyImplementsSpecifierNodenode type. - API:
PropertyIndexSpecifierNodenode type. - API:
PropertyStoredSpecifierNodenode type.
Changed
- Include the global library path in unit import resolution.
- Improve AST modeling around property specifiers.
- Improve semantic analysis around property specifiers.
- Exclude properties with
implementsspecifiers inUnusedProperty.
Fixed
- Overly permissive parsing rules around
stringandfiletypes. - Quick fixes removing comments and compiler directives in
RedundantInherited. - False positives around
messagehandler methods inRedundantInherited. - False positives when parameter names were mismatched to the inherited method in
RedundantInheritedandInheritedMethodWithNoCode. - API:
ArrayConstructorNode::getImagereturned an incorrect image containing[as an element.
1.7.0
Added
RedundantInheritedanalysis rule, which flags redundantinheritedstatements that can be safely removed.
Changed
- Include "found" and "expected" values for issue messages in
LowercaseKeyword. - Exclude
JandKby default inShortIdentifier. - Improve compiler directive parsing in cases where the directive name is not followed by whitespace.
Fixed
- The
resultattribute in NUnit test reports was not being treated as case-insensitive. - Scan failures on nested compiler directives.