Releases: github/codeql-coding-standards
Releases · github/codeql-coding-standards
v2.54.0
Release summary
- New queries added for the following rule packages: Linkage1, Scope
- The following changes have been made for this release:
A3-1-4-ExternalLinkageArrayWithoutExplicitSizeAutosar.ql:ExternalLinkageArrayWithoutExplicitSize.qlhas been renamed toExternalLinkageArrayWithoutExplicitSizeAutosar.qlto reflect shared query implementation. Additionally the query previously only detected explicit uses ofexternto determine external linkage, and now would catch other cases that are possible where it is external linkage and an array is declared without an explicit size.
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.21.4in conjunction with a copy of the CodeQL standard library for C++ (github/codeql) set to the tagcodeql-cli/v2.21.4. - Using the CodeQL Action or CodeQL runner with the codeql-bundle-v2.21.4.
- Using the CodeQL CLI version
Appendix: AUTOSAR new queries
New queries added to cover the following rules:
- A3-1-4 -
ExternalLinkageArrayWithoutExplicitSizeAutosar.ql
Appendix: MISRA-C++-2023 new queries
New queries added to cover the following rules:
- RULE-6-0-2 -
ExternalLinkageArrayWithoutExplicitSizeMisra.ql - RULE-6-5-1 -
ExternalLinkageNotDeclaredInHeaderFileMisra.ql
v2.53.0
Release summary
- New queries added for the following rule packages: Exceptions3, Preconditions4
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.20.7in conjunction with a copy of the CodeQL standard library for C++ (github/codeql) set to the tagcodeql-cli/v2.20.7. - Using the CodeQL Action or CodeQL runner with the codeql-bundle-v2.20.7.
- Using the CodeQL CLI version
Appendix: MISRA-C++-2023 new queries
New queries added to cover the following rules:
- RULE-18-3-1 -
MissingCatchAllExceptionHandlerInMain.ql - RULE-18-3-2 -
ClassExceptionCaughtByValue.ql - RULE-18-4-1 -
ExceptionUnfriendlyFunctionMustBeNoexcept.ql - RULE-22-4-1 -
InvalidAssignmentToErrno.ql
v2.52.0
Release summary
- New queries added for the following rule packages: Preconditions1, Statements
- The following changes have been made for this release:
CON51-CPP-EnsureActivelyHeldLocksAreReleasedOnExceptionalConditions.ql:- Exclude RAII-style locks from query results, as they cannot be leaked, and are recommended to avoid alerts in this rule.
M0-1-3-UnusedLocalVariable.ql:- Improved performance of the unused local variable analysis by moving constant expression value extraction to a separate pass, eliminating certain expensive joins.
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.20.7in conjunction with a copy of the CodeQL standard library for C++ (github/codeql) set to the tagcodeql-cli/v2.20.7. - Using the CodeQL Action or CodeQL runner with the codeql-bundle-v2.20.7.
- Using the CodeQL CLI version
Appendix: MISRA-C++-2023 new queries
New queries added to cover the following rules:
- RULE-8-2-9 -
PolymorphicClassTypeExpressionInTypeid.ql - RULE-9-4-2 -
AppropriateStructureOfSwitchStatement.ql - RULE-9-5-1 -
LegacyForStatementsShouldBeSimple.ql - RULE-9-5-2 -
ForRangeInitializerAtMostOneFunctionCall.ql
v2.51.0
Release summary
- New queries added for the following rule packages: Conversions2
- The following changes have been made for this release:
M5-2-2-PointerToAVirtualBaseClassCastToAPointer.ql:- Report casts where the from or to types are typedefs to virtual base classes or derived classes.
- Report casts to a reference type which is a derived type.
- Report casts where the base class is the parent of a virtual base class.
- The alert message has been updated to refer to the virtual base class derivation.
RULE-1-2,RULE-23-3,RULE-23-5,RULE-23-6:- Results that occur in nested macro invocations are now reported in the macro that defines the contravening code, rather than the macro which is first expanded.
- Results the occur in arguments to macro invocations are now reported in at the macro invocation site, instead of the macro definition site.
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.20.7in conjunction with a copy of the CodeQL standard library for C++ (github/codeql) set to the tagcodeql-cli/v2.20.7. - Using the CodeQL Action or CodeQL runner with the codeql-bundle-v2.20.7.
- Using the CodeQL CLI version
Appendix: MISRA-C++-2023 new queries
New queries added to cover the following rules:
- RULE-8-2-1 -
VirtualBaseClassCastToDerived.ql - RULE-8-2-2 -
NoCStyleOrFunctionalCasts.ql - RULE-8-2-6 -
IntToPointerCastProhibited.ql - RULE-8-2-7 -
NoPointerToIntegralCast.ql - RULE-8-2-8 -
PointerToIntegralCast.ql - RULE-9-2-1 -
NoStandaloneTypeCastExpression.ql
v2.50.0
Release summary
- New queries added for the following rule packages: BannedAPIs, Conversions
- The following changes have been made for this release:
A3-9-1-VariableWidthIntegerTypesUsed.ql:- This query now reports the use of non-fixed width integer types in function return types, with the exception of
chartypes and formainfunctions.
- This query now reports the use of non-fixed width integer types in function return types, with the exception of
ENV34-C,RULE-21-20,RULE-25-5-3:DoNotStorePointersReturnedByEnvFunctions.ql,CallToSetlocaleInvalidatesOldPointers.ql,CallToSetlocaleInvalidatesOldPointersMisra.ql- Fixed a misspelling of "subsequent" in the alert 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.20.7in conjunction with a copy of the CodeQL standard library for C++ (github/codeql) set to the tagcodeql-cli/v2.20.7. - Using the CodeQL Action or CodeQL runner with the codeql-bundle-v2.20.7.
- Using the CodeQL CLI version
Appendix: MISRA-C++-2023 new queries
New queries added to cover the following rules:
- RULE-6-9-2 -
AvoidStandardIntegerTypeNames.ql - RULE-7-0-1 -
NoConversionFromBool.ql - RULE-7-0-2 -
NoImplicitBoolConversion.ql - RULE-7-0-3 -
NoCharacterNumericalValue.ql - RULE-7-0-4 -
InappropriateBitwiseOrShiftOperands.ql - RULE-7-0-5 -
NoSignednessChangeFromPromotion.ql - RULE-7-0-6 -
NumericAssignmentTypeMismatch.ql - RULE-7-11-3 -
FunctionPointerConversionContext.ql - RULE-18-5-2 -
AvoidProgramTerminatingFunctions.ql - RULE-21-2-2 -
UnsafeStringHandlingFunctions.ql - RULE-21-2-3 -
BannedSystemFunction.ql - RULE-21-10-1 -
NoVariadicFunctionMacros.ql - RULE-21-10-2 -
NoCsetjmpHeader.ql - RULE-23-11-1 -
UseSmartPtrFactoryFunctions.ql - RULE-24-5-1 -
CharacterHandlingFunctionRestrictions.ql - RULE-24-5-2 -
NoMemoryFunctionsFromCString.ql - RULE-25-5-1 -
LocaleGlobalFunctionNotAllowed.ql
v2.49.0
Release summary
- New queries added for the following rule packages: Expressions2
- The following changes have been made for this release:
DCL40-C,RULE-8-4:IncompatibleFunctionDeclarations.ql,CompatibleDeclarationFunctionDefined.ql.- Fixed performance issues introduced when upgrading to CodeQL
2.20.7by removing unnecessary check that matching function declarations have matching names.
- Fixed performance issues introduced when upgrading to CodeQL
RULE-7-5:IncorrectlySizedIntegerConstantMacroArgument.ql.- Added a
bindingsetto improve performance when checking if a literal matches the size of an integer constant macro.
- Added a
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.20.7in conjunction with a copy of the CodeQL standard library for C++ (github/codeql) set to the tagcodeql-cli/v2.20.7. - Using the CodeQL Action or CodeQL runner with the codeql-bundle-v2.20.7.
- Using the CodeQL CLI version
Appendix: CERT-C new queries
New queries added to cover the following rules:
- EXP16-C -
DoNotCompareFunctionPointersToConstantValues.ql
v2.48.0
Release summary
- No new queries were added for this release
- The following changes have been made for this release:
SIG30-C:CallOnlyAsyncSafeFunctionsWithinSignalHandlers.ql- Fixed a misspelling of "asynchronous" in the alert 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.19.4in conjunction with a copy of the CodeQL standard library for C++ (github/codeql) set to the tagcodeql-cli/v2.19.4. - Using the CodeQL Action or CodeQL runner with the codeql-bundle-v2.19.4.
- Using the CodeQL CLI version
v2.47.0
Release summary
- No new queries were added for this release
- The following changes have been made for this release:
FIO39-C,FIO50-CPP,A27-0-3,RULE-30-0-2:IOFstreamMissingPositioning.ql,InterleavedInputOutputWithoutPosition.ql,InterleavedInputOutputWithoutFlush.ql,ReadsAndWritesOnStreamNotSeparatedByPositioning.ql.- Improved performance for codebases with large numbers of stream or file accesses.
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.19.4in conjunction with a copy of the CodeQL standard library for C++ (github/codeql) set to the tagcodeql-cli/v2.19.4. - Using the CodeQL Action or CodeQL runner with the codeql-bundle-v2.19.4.
- Using the CodeQL CLI version
v2.46.0
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.19.4in conjunction with a copy of the CodeQL standard library for C++ (github/codeql) set to the tagcodeql-cli/v2.19.4. - Using the CodeQL Action or CodeQL runner with the codeql-bundle-v2.19.4.
- Using the CodeQL CLI version
v2.45.0
Release summary
- New queries added for the following rule packages: FloatingPoint
- The following changes have been made for this release:
RULE-1-4-EmergentLanguageFeaturesUsed.ql:- Allow usage of atomics,
thread.h, and_Thread_localas per Misra C 2012 Amendment 4.
- Allow usage of atomics,
RULE-21-22,RULE-21-23-TgMathArgumentWithInvalidEssentialType.ql,TgMathArgumentsWithDifferingStandardType.ql- Change type-generic macro analysis for finding macro parameters to be compatible with gcc, by ignoring early arguments inserted by gcc.
- Change explicit conversion logic to ignore the explicit casts inserted in macro bodies by clang, which previously overruled the argument essential type.
RULE-13-2-UnsequencedAtomicReads.ql:- Handle statement expression implementation of atomic operations in gcc.
RULE-21-25-InvalidMemoryOrderArgument.ql:- Handle case of where the enum
memory_orderis declared via a typedef as an anonymous enum. - Rewrite how atomically sequenced operations are found; no longer look for builtins or internal functions, instead look for macros with the exact expected name and analyze the macro bodies for the memory sequence parameter.
- Handle case of where the enum
RULE-9-7-UninitializedAtomicArgument.ql:- Handle gcc case where
atomic_initis defined is a call toatomic_store, and take a more flexible approach to finding the initialized atomic variable.
- Handle gcc case where
DIR-4-15-PossibleMisuseOfUndetectedInfinity.ql,PossibleMisuseOfUndetectedNaN.ql:- Fix issue when analyzing clang/gcc implementations of floating point classification macros, where analysis incorrectly determined that
xinisinf(x)was guaranteed to be infinite at the call site itself, affecting later analysis involvingx.
- Fix issue when analyzing clang/gcc implementations of floating point classification macros, where analysis incorrectly determined that
- The following query suites have been added or modified for CERT C:
- A new query suite has been created
cert-c-default.qlsto avoid confusion with the CERT C++ query suites. Thecert-default.qlssuite has been deprecated, and will be removed in a future releases, and is replaced by thecert-c-default.qlssuite.- The
cert-c-default.qlssuite has been specified as the default for the pack, and will include our most up-to-date coverage for CERT C.
- The
- One new query suite,
cert-c-recommended.qlshas been added to enable running CERT recommendations (as opposed to rules) that will be added in the future. - The default query suite,
cert-c-default.qlshas been set to exclude CERT recommendations (as opposed to rules) that will be added in the future.
- A new query suite has been created
- The following query suites have been added or modified for CERT C++:
- A new query suite has been created
cert-cpp-default.qlsto avoid confusion with the CERT C query suites. Thecert-default.qlssuite has been deprecated, and will be removed in a future releases, and is replaced by thecert-cpp-default.qlssuite.- The
cert-cpp-default.qlssuite has been specified as the default for the pack, and will include our most up-to-date coverage for CERT C.
- The
- A new query suite has been created
cert-cpp-single-translation-unit.qlsto avoid confusion with the CERT C query suites. Thecert-single-translation-unit.qlssuite has been deprecated, and will be removed in a future releases, and is replaced by thecert-cpp-single-translation-unit.qlssuite.
- A new query suite has been created
DIR-4-15-PossibleMisuseOfUndetectedInfinity.ql,PossibleMisuseOfUndetectedNaN.ql:- Add logic to suppress NaNs from the CodeQL extractor in the new restricted range analysis, which can have unexpected downstream effects.
- Alter the behavior of floating point class guards (such as
isinf,isfinite,isnan) to more correctly reflect the branches that have been guarded. - Query files have been moved/refactored to share logic across MISRA-C and MISRA-C++; no observable change in behavior from this is expected.
- All CERT rules now include additional tags to represent the Risk Assessment properties specified on CERT rules.
- In addition, new query suites are included which allow the selection of queries that represent CERT Rules (not Recommendations) for each of the Levels (1-3). These are called
cert-<lang>-<level>.qlsand can be used either directly in the CodeQL CLI, or via the CodeQL Action.
- In addition, new query suites are included which allow the selection of queries that represent CERT Rules (not Recommendations) for each of the Levels (1-3). These are called
- Support for MISRA C 2023 is now completed.
- The default query suites for MISRA C now target MISRA C 2023.
- The user manual has been updated to list MISRA C 2023 as completed.
- The
misra-c-2012-third-edition-with-amendment-2.qlsquery suite can be used to run the queries present in MISRA C 2012 (3rd Edition) and Amendment 2.
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.19.4in conjunction with a copy of the CodeQL standard library for C++ (github/codeql) set to the tagcodeql-cli/v2.19.4. - Using the CodeQL Action or CodeQL runner with the codeql-bundle-v2.19.4.
- Using the CodeQL CLI version
Appendix: MISRA-C++-2023 new queries
New queries added to cover the following rules:
- DIR-0-3-1 -
PossibleMisuseOfInfiniteFloatingPointValue.ql,PossibleMisuseOfNaNFloatingPointValue.ql