Skip to content

Releases: github/codeql-coding-standards

v2.24.0

07 Dec 22:56
f6b6c3a

Choose a tag to compare

Release summary

  • No new queries were added for this release
  • The following changes have been made for this release:
    • A7-3-1 - HiddenInheritedNonOverridableMemberFunction.ql:
      • Reduce duplication by reporting only a single location for each declaration of a problematic element.
      • Reduce duplication when reporting the hidden function by reporting only one declaration entry.
      • Improve performance by eliminating a number of bad join orders.
      • Fix false positives where the using declaration occurred after the function declaration.
      • Exclude special member functions, which cannot be inherited.
      • Exclude private member functions, which cannot be inherited.
    • M5-0-20, M5-0-21, RULE-10-1 - exclude pointer assignment operators as bitwise operators.
  • The release artifacts now include a certification kit used for ISO26262 certification.
  • M5-0-20 - BitwiseOperatorOperandsHaveDifferentUnderlyingType.ql:
    • Use the Misra definition of underlying type.

Supported versions

  • The LGTM pack is not supported on any released version of LGTM without support from GitHub Professional Services.
  • The Code Scanning pack is supported when:
    • Using the CodeQL CLI version 2.14.6 in conjunction with a copy of the CodeQL standard library for C++ (github/codeql) set to the tag codeql-cli/v2.14.6.
    • Using the CodeQL Action or CodeQL runner with the codeql-bundle-v2.14.6.

v2.23.0

13 Oct 18:48
dadd23a

Choose a tag to compare

v2.23.0 Pre-release
Pre-release

Release summary

  • No new queries were added for this release
  • The following changes have been made for this release:
  • A0-1-3 - Considered the following additional use cases while reporting a local function as "unused".
    • The address of a function is taken
    • The operand of an expression in an unevaluated context
    • Functions marked with [[maybe_unused]]
    • Explicitly deleted functions e.g. =delete
    • Use of any overload of a function in an overload set constitute a use of all members of the set. An overload set is a set of functions with the same name that differ in the number, type and/or qualifiers of their parameters, and, for the purpose of this query, are limited to functions which are declared in the same scope (namespace or class).

Supported versions

  • The LGTM pack is not supported on any released version of LGTM without support from GitHub Professional Services.
  • The Code Scanning pack is supported when:
    • Using the CodeQL CLI version 2.13.5 in conjunction with a copy of the CodeQL standard library for C++ (github/codeql) set to the tag codeql-cli/v2.13.5.
    • Using the CodeQL Action or CodeQL runner with the codeql-bundle-v2.13.5.

v2.22.0

13 Sep 14:47
c3f15d7

Choose a tag to compare

v2.22.0 Pre-release
Pre-release

Release summary

  • No new queries were added for this release
  • The following changes have been made for this release:
    • FIO32-C - DoNotPerformFileOperationsOnDevices.ql:
      • The query was updated to work with the latest version of the dataflow library.
    • A5-1-3 - Only consider lambdas that have zero arguments, since any lambda with non-zero arguments will have an explicit argument list.
    • M0-1-3 - Consider constexpr variables used in template instantiations as "used".
    • A8-4-13
    • Address false positives caused by missing modelling of modifying operations for smart pointers for some standard libraries (such as libstdc++).
    • A20-8-1/MEM56-CPP
      • Address false negatives caused by lack of modelling of flow through smart pointers.
      • Reduce flow paths through standard library headers to simplify results.
    • A18-1-4
      • Address false positives caused by missing modelling of modifying operations for smart pointers for some standard libraries (such as libstdc++).
    • STR51-CPP
      • Address false negatives caused by incomplete modelling of the std::string::replace() function.
    • A15-5-1
      • Rephrase alert message for noalert(false) special functions to clarify that this permits exceptions.
      • Additional results for implicit noexcept(true) special functions highlighting that the specification should be made explicit.
    • Updated the supported CodeQL version to 2.12.7.
    • A15-2-2 - all results now include an associated exception flow path to avoid a CodeQL CLI bug in 2.12.7. This includes results where an exception is thrown directly in the constructor.

Supported versions

  • The LGTM pack is not supported on any released version of LGTM without support from GitHub Professional Services.
  • The Code Scanning pack is supported when:
    • Using the CodeQL CLI version 2.12.7 in conjunction with a copy of the CodeQL standard library for C++ (github/codeql) set to the tag codeql-cli/v2.12.7.
    • Using the CodeQL Action or CodeQL runner with the codeql-bundle-20230418.

v2.21.0

07 Sep 19:57
f3a5558

Choose a tag to compare

v2.21.0 Pre-release
Pre-release

Release summary

  • No new queries were added for this release
  • The following changes have been made for this release:
  • FIO32-C - DoNotPerformFileOperationsOnDevices.ql:
  • The query was rewritten to no longer depend of the DefaultTaintTracking library, which will be deprecated.
  • A7-1-5 - exclude compiler generated variables, such as those generated by for loops.
  • M8-0-1 - exclude compiler generated variables, such as those generated by for loops.
  • Updated the supported CodeQL version to 2.11.6.
  • A number of rules had the wrong query ids attached for deviation purposes. This means they could not be deviated against using the correct ID, but could be incidentally suppressed when deviating a different rule. We have fixed this behavior for the following rules:
  • RULE-11-4
  • DIR-4-12
  • RULE-21-6
  • RULE-21-9
  • MEM51-CPP

Supported versions

  • The LGTM pack is not supported on any released version of LGTM without support from GitHub Professional Services.
  • The Code Scanning pack is supported when:
    • Using the CodeQL CLI version 2.11.6 in conjunction with a copy of the CodeQL standard library for C++ (github/codeql) set to the tag codeql-cli/v2.11.6.
    • Using the CodeQL Action or CodeQL runner with the codeql-bundle-20221211.

v2.20.0

20 Jul 21:02
502ea7a

Choose a tag to compare

v2.20.0 Pre-release
Pre-release

Release summary

  • No new queries were added for this release

Supported versions

  • The LGTM pack is not supported on any released version of LGTM without support from GitHub Professional Services.
  • The Code Scanning pack is supported when:
    • Using the CodeQL CLI version 2.10.5 in conjunction with a copy of the CodeQL standard library for C++ (github/codeql) set to the tag codeql-cli/v2.10.5.
    • Using the CodeQL Action or CodeQL runner with the codeql-bundle-20220908.

v2.19.0

31 May 02:11
ce58a53

Choose a tag to compare

v2.19.0 Pre-release
Pre-release

Release summary

  • No new queries were added for this release
  • The following changes have been made for this release:
    • A16-0-1 - reduce unneeded results related to #pragma, as it's already reported by A16-7-1.
    • DCL51-CPP - reduce false positives related to use of __func__
    • A2-10-1 - reduce false positives for identifiers in same scope and relating to template variables
    • RULE-5-3- reduce false positives for identifiers in same scope
    • A5-1-1 - reduce false positives by omitting literals written into file streams and wrappers around log and stream calls
    • A14-7-2 - alert messages have been slightly adjusted to refer only to the base name of a file, not the full relative path.
    • DCL56-CPP - performance has been improved for databases with complex initializers.
    • Exclude the use of __func__ from certain queries, as it is the proscribed way to return the name of the current function:
      • A27-0-4 - Use of the value returned by __func__ is no longer flagged as a use of C-style strings.
      • A18-1-1 - __func__ is no longer flagged as a declaration of a variable using C-style arrays.
    • DCL51-CPP - cpp/cert/use-of-single-underscore-reserved-prefix - remove false positives which were compiler generated, such as the function _FUN generated by the compiler for lambdas converted to function pointers.
      Fix issues emerged running the test suite when compiled with qcc:
  • Fix False Negatives issues
    • A1-1-1: restrict alerts to mentioned types
    • A5-2-5: get type for value_type
    • A18-1-2 A18-1-3 A18-9-1: support std inline namespaces (std::__1)
    • A23-0-1 A23-0-2: functions in std might be defined in inline namespaces
    • M0-1-4: removed test case
    • M6-5-2: equality operator alternative implementations
    • M17-0-5: longjmp might be a macro
    • CTR51-CPP CTR53-CPP ERR50-CPP ERR52-CPP STR52-CPP: fixed by library changes
    • MSC51-CPP: time can be in the global scope
    • STR51-CPP: String constructor might have 1 parameter.
  • Fix False Positives issues
    • STR53-CPP: compute initial container size for copy constructor
    • A0-4-1: numeric limits might be defined in __libcpp_numeric_limits
    • A0-4-3: the rule now only checks the last -std compilation flag
  • Fix exclusion criteria using the isExcluded() predicate
    • A2-13-3 A8-4-4

Supported versions

  • The LGTM pack is not supported on any released version of LGTM without support from GitHub Professional Services.
  • The Code Scanning pack is supported when:
    • Using the CodeQL CLI version 2.10.5 in conjunction with a copy of the CodeQL standard library for C++ (github/codeql) set to the tag codeql-cli/v2.10.5.
    • Using the CodeQL Action or CodeQL runner with the codeql-bundle-20220908.

v2.18.0

05 May 22:50
b5ce8f4

Choose a tag to compare

v2.18.0 Pre-release
Pre-release

Release summary

  • No new queries were added for this release
  • The following changes have been made for this release:
  • A15-4-4 - MissingNoExcept.ql
    • Exclude call operators embedded in a lambda expression from functions to be declared noexcept or noexcept(false).
  • A2-7-3 - UndocumentedUserDefinedType.ql:
    • Exclude lambda functions from program elements to be documented.
  • Fix compatibility issues with the qcc compiler and standard headers:
    • RULE-21-4: longjmp can be implmented as macro
    • ENV32-C: exit functions can be implmented as macro
    • ERR33-C FIO34-C FIO46-C RULE-22-6: the library files ReadErrorsAndEOF.qll DoNotAccessAClosedFile.qll FileAccess.qll have been updated to support different definitions of IO related functions and macros
    • RULE-10-6: Fix output string format
    • STR37-C: add support for a different tolower/toupper macro implementation
    • EXP43-C: add explicit support for library functions that are mentioned in the rule description
    • RULE-11-1 RULE-11-2 RULE-11-5: support for a different NULL pointer definition
    • STR38-C: removed links to library internals in the output message

Supported versions

  • The LGTM pack is not supported on any released version of LGTM without support from GitHub Professional Services.
  • The Code Scanning pack is supported when:
    • Using the CodeQL CLI version 2.10.5 in conjunction with a copy of the CodeQL standard library for C++ (github/codeql) set to the tag codeql-cli/v2.10.5.
    • Using the CodeQL Action or CodeQL runner with the codeql-bundle-20220908.

v2.17.0

10 Apr 18:34
f74633d

Choose a tag to compare

v2.17.0 Pre-release
Pre-release

Release summary

  • New queries added for the following rule packages: OutOfBounds

Supported versions

  • The LGTM pack is not supported on any released version of LGTM without support from GitHub Professional Services.
  • The Code Scanning pack is supported when:
    • Using the CodeQL CLI version 2.10.5 in conjunction with a copy of the CodeQL standard library for C++ (github/codeql) set to the tag codeql-cli/v2.10.5.
    • Using the CodeQL Action or CodeQL runner with the codeql-bundle-20220908.

Appendix: MISRA-C-2012 new queries

New queries added to cover the following rules:

  • RULE-21-17 - StringFunctionPointerArgumentOutOfBounds.ql
  • RULE-21-18 - StringLibrarySizeArgumentOutOfBounds.ql

Appendix: CERT-C new queries

New queries added to cover the following rules:

  • ARR30-C - DoNotFormOutOfBoundsPointersOrArraySubscripts.ql
  • ARR38-C - LibraryFunctionArgumentOutOfBounds.ql

v2.16.0

31 Mar 17:54
576499a

Choose a tag to compare

v2.16.0 Pre-release
Pre-release

Release summary

  • New queries added for the following rule packages: Contracts7, FloatingTypes, IntegerOverflow, InvalidMemory2, Language3, Memory2, Memory3, SideEffects3, SideEffects4, SignalHandlers, StandardLibraryFunctionTypes, Statements1, Statements2, Statements3, Statements4, Statements5, Statements6, Static, Types1
  • The following changes have been made for this release:
    • Rule 20.12 - the performance of this rule has been improved.
    • The performance of the following identifier related rules has been improved:
      • MISRA C 2012 Rule 5.8
      • MISRA C 2012 Rule 8.7
    • M6-6-2: Changed formatting of the alert message.
    • M6-4-2: Changed formatting of alert message.
    • FIO42-C - CloseFilesWhenTheyAreNoLongerNeeded.ql:
      • Parentheses have been added to a resolve previously lacking parentheses in the where clause, such that the exclusion mechanism only functioned for a certain subset of results.
      • The query implementation has been moved to a shared implementation.
    • M5-19-1:
      • Reduce false negatives by fixing a bug where a constant expression was immediately casted to a signed type.
    • M6-4-4 - alert message updated for clarity.
    • A4-7-1 - IntegerExpressionLeadToDataLoss.ql - reduce false positives and false negatives by:
      • Identifying additional categories of valid guard.
      • Excluding guards which were not proven to prevent overflow or underflow.
      • Expand coverage to include unary operations and arithmetic assignment operations.

Supported versions

  • The LGTM pack is not supported on any released version of LGTM without support from GitHub Professional Services.
  • The Code Scanning pack is supported when:
    • Using the CodeQL CLI version 2.10.5 in conjunction with a copy of the CodeQL standard library for C++ (github/codeql) set to the tag codeql-cli/v2.10.5.
    • Using the CodeQL Action or CodeQL runner with the codeql-bundle-20220908.

Appendix: MISRA-C-2012 new queries

New queries added to cover the following rules:

  • DIR-4-6 - PlainNumericalTypeUsedOverExplicitTypedef.ql
  • RULE-1-2 - LanguageExtensionsShouldNotBeUsed.ql
  • RULE-1-3 - OccurrenceOfUndefinedBehavior.ql
  • RULE-7-4 - StringLiteralAssignedToNonConstChar.ql
  • RULE-12-2 - RightHandOperandOfAShiftRange.ql
  • RULE-12-4 - ConstantUnsignedIntegerExpressionsWrapAround.ql
  • RULE-12-5 - SizeofOperatorUsedOnArrayTypeParam.ql
  • RULE-13-2 - UnsequencedSideEffects.ql
  • RULE-14-2 - ForLoopNotWellFormed.ql
  • RULE-14-3 - ControllingExprInvariant.ql
  • RULE-14-4 - NonBooleanIfCondition.ql, NonBooleanIterationCondition.ql
  • RULE-15-1 - GotoStatementUsed.ql
  • RULE-15-2 - GotoLabelLocationCondition.ql
  • RULE-15-3 - GotoLabelBlockCondition.ql
  • RULE-15-4 - LoopIterationCondition.ql
  • RULE-15-5 - FunctionReturnCondition.ql
  • RULE-15-6 - SwitchCompoundCondition.ql, LoopCompoundCondition.ql, SelectionCompoundCondition.ql
  • RULE-15-7 - IfElseEndCondition.ql
  • RULE-16-1 - SwitchCaseStartCondition.ql, SwitchStmtNotWellFormed.ql
  • RULE-16-2 - NestSwitchLabelInSwitchStatement.ql
  • RULE-16-3 - BreakShallTerminateSwitchClause.ql
  • RULE-16-4 - EverySwitchShallHaveDefaultLabel.ql
  • RULE-16-5 - DefaultNotFirstOrLastOfSwitch.ql
  • RULE-16-6 - SwitchClauseNumberCondition.ql
  • RULE-16-7 - SwitchExpressionBoolCondition.ql
  • RULE-17-2 - RecursiveFunctionCondition.ql
  • RULE-17-4 - NonVoidFunctionReturnCondition.ql
  • RULE-17-6 - UseOfArrayStatic.ql
  • RULE-19-1 - ObjectAssignedToAnOverlappingObject.ql, ObjectCopiedToAnOverlappingObject.ql
  • RULE-21-13 - CtypeFunctionArgNotUnsignedCharOrEof.ql
  • RULE-21-15 - MemcpyMemmoveMemcmpArgNotPointersToCompatibleTypes.ql
  • RULE-22-1 - FreeMemoryWhenNoLongerNeededMisra.ql, CloseFileHandleWhenNoLongerNeededMisra.ql
  • RULE-22-2 - OnlyFreeMemoryAllocatedDynamicallyMisra.ql

Appendix: CERT-C new queries

New queries added to cover the following rules:

  • ARR32-C - VariableLengthArraySizeNotInValidRange.ql
  • ARR36-C - DoNotSubtractPointersThatDoNotReferToTheSameArray.ql, DoNotRelatePointersThatDoNotReferToTheSameArray.ql
  • ARR37-C - DoNotUsePointerArithmeticOnNonArrayObjectPointers.ql
  • EXP35-C - DoNotModifyObjectsWithTemporaryLifetime.ql
  • EXP42-C - DoNotComparePaddingData.ql
  • FLP30-C - FloatingPointLoopCounters.ql
  • FLP32-C - UncheckedRangeDomainPoleErrors.ql
  • FLP34-C - UncheckedFloatingPointConversion.ql
  • FLP36-C - IntToFloatPreservePrecision.ql
  • FLP37-C - MemcmpUsedToCompareFloats.ql
  • INT30-C - UnsignedIntegerOperationsWrapAround.ql
  • INT31-C - IntegerConversionCausesDataLoss.ql
  • INT32-C - SignedIntegerOverflow.ql
  • INT33-C - DivOrRemByZero.ql
  • INT34-C - ExprShiftedbyNegativeOrGreaterPrecisionOperand.ql
  • INT35-C - UseCorrectIntegerPrecisions.ql
  • INT36-C - ConvertingAPointerToIntegerOrIntegerToPointer.ql
  • MEM31-C - FreeMemoryWhenNoLongerNeededCert.ql
  • MEM33-C - AllocStructsWithAFlexibleArrayMemberDynamically.ql, CopyStructsWithAFlexibleArrayMemberDynamically.ql
  • MEM34-C - OnlyFreeMemoryAllocatedDynamicallyCert.ql
  • MEM35-C - InsufficientMemoryAllocatedForObject.ql
  • MEM36-C - DoNotModifyAlignmentOfMemoryWithRealloc.ql
  • MSC33-C - DoNotPassInvalidDataToTheAsctimeFunction.ql
  • MSC39-C - DoNotCallVaArgOnAVaListThatHasAnIndeterminateValue.ql
  • PRE31-C - SideEffectsInArgumentsToUnsafeMacros.ql
  • SIG30-C - CallOnlyAsyncSafeFunctionsWithinSignalHandlers.ql
  • SIG31-C - DoNotAccessSharedObjectsInSignalHandlers.ql
  • SIG34-C - DoNotCallSignalFromInterruptibleSignalHandlers.ql
  • SIG35-C - DoNotReturnFromAComputationalExceptionHandler.ql

v2.15.1

18 Mar 00:26
8159166

Choose a tag to compare

v2.15.1 Pre-release
Pre-release

Release summary

  • No new queries were added for this release
  • The following changes have been made for this release:
    • The performance of the following queries related to essential types have been improved:
      • Rule 10.1
      • Rule 10.2
      • Rule 10.3
      • Rule 10.4
      • Rule 10.5
      • Rule 10.6
      • Rule 10.7
      • Rule 10.8
      • Rule 14.1
      • Rule 21.14
      • Rule 21.16

Supported versions

  • The LGTM pack is not supported on any released version of LGTM without support from GitHub Professional Services.
  • The Code Scanning pack is supported when:
    • Using the CodeQL CLI version 2.10.5 in conjunction with a copy of the CodeQL standard library for C++ (github/codeql) set to the tag codeql-cli/v2.10.5.
    • Using the CodeQL Action or CodeQL runner with the codeql-bundle-20220908.