codeql-coding-standards
codeql-coding-standards copied to clipboard
`A8-5-2`: Create query to cover `auto` case
Affected rules
-
A8-5-2
Description
The rule A8-5-2
(use braced initialization) conflicts with rule A8-5-3
(A variable of type auto shall not be initialized using {} or ={} braced-initialization). This is because C++14 will deduce auto x2{10};
as std::initializer_list
, which is usually not what the developer intended. This behaviour is changed in C++17, and in practice many compilers also address it in C++14 mode.
In order to use auto
in a codebase and remain compliant to AUTOSAR a deviation is required either on A8-5-3
, to allow braced initialization for auto
variables where the compiler supports this, or for A8-5-2
, to permit the use of =
initialization with auto
.
In the latter case we want to be able to deviate only on those cases which are declared as auto
. To facilitate that we will split the rule between the auto
and not auto
. Currently, our query only supports the "non-auto" case.
Example
auto v = init();