- Notifications
You must be signed in to change notification settings - Fork70
v2.45.0
3b16880 This commit was created on GitHub.com and signed with GitHub’sverified signature.
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 theRisk 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 thecodeql-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
Assets9
Uh oh!
There was an error while loading.Please reload this page.