Skip to content

1.16.0

Compare
Choose a tag to compare
@github-actions github-actions released this 08 May 23:56
· 24 commits to master since this release

Added

  • Support for MSBuild item and item metadata expressions in project files.
  • Debug logging for name resolution failures (enabled with sonar-scanner -X).
  • ExhaustiveEnumCase analysis rule, which flags case statements that do not handle all values in an enumeration.
  • IterationPastHighBound analysis rule, which flags for loops that iterate past the end of the collection.
  • ExplicitBitwiseNot analysis rule, which flags potentially incorrect bitwise not operations.
  • API: EnumeratorOccurrence type.
  • API: ForInStatementNode::getEnumeratorOccurrence method.
  • API: TypeOfTypeNode::getTypeReferenceNode method.
  • API: NameReferenceNode::getFirstName method.
  • API: DelphiTokenType.TYPE_CONSTRAINT token type.
  • API: ConstraintNode node type.
  • API: ClassConstraintNode node type.
  • API: ConstructorConstraintNode node type.
  • API: RecordConstraintNode node type.
  • API: TypeConstraintNode node type.
  • API: TypeParameterNode::getConstraintNodes method.
  • API: TypeParameterType::constraintItems method.
  • API: Constraint type.
  • API: Constraint.ClassConstraint type.
  • API: Constraint.ConstructorConstraint type.
  • API: Constraint.RecordConstraint type.
  • API: Constraint.TypeConstraint type.

Changed

  • Detect tab-indented multiline strings in TabulationCharacter.
  • Improve support for evaluating name references in compiler directive expressions.
  • Improve overload resolution in cases involving generic type parameter constraints.
  • Improve handling for MSBuild properties, items, and conditional evaluation.
  • Perform best-effort name resolution of arguments to unresolved routines or array properties, which improves analysis quality in cases where symbol information is incomplete.

Deprecated

  • API: ForInStatementNode::getGetEnumeratorDeclaration method, get the declaration through getEnumeratorOccurrence instead.
  • API: ForInStatementNode::getMoveNextDeclaration method, get the declaration through getEnumeratorOccurrence instead.
  • API: ForInStatementNode::getCurrentDeclaration method, get the declaration through getEnumeratorOccurrence instead.
  • API: TypeParameterNode::getTypeConstraintNodes method, use getConstraintNodes instead.
  • API: TypeParameterType::constraints method, use constraintItems instead.

Fixed

  • False positives on enumerable method GetEnumerator in UnusedRoutine.
  • False positives on enumerator method MoveNext in UnusedRoutine.
  • False positives on enumerator property Current in UnusedProperty.
  • False positives on enums that are never referenced by name (but have used values) in UnusedType.
  • Name resolution failures in legacy initialization sections referencing the implementation section.
  • Name resolution failures when accessing ancestors of enclosing types from nested type methods.
  • Name resolution failures on invocations of methods with generic open array parameters.
  • Name resolution failures around Create calls on types with constructor constraints.
  • Name resolution failures on read, write, and stored specifiers of indexed properties.
  • Name resolution failures on routine references assigned to a var/const declaration.
  • Name resolution failures on routine references in constant arrays.
  • Type resolution failures on array expressions nested within multidimensional constant arrays.
  • Incorrect file position calculation for multiline string tokens.
  • Analysis errors around type of type declarations.