github / codeql-coding-standards

This repository contains CodeQL queries and libraries which support various Coding Standards.
MIT License
127 stars 58 forks source link

`A5-16-1`: Constructing `std::string` is considered as sub-expression in ternary operation #754

Open nbusser-sr opened 2 weeks ago

nbusser-sr commented 2 weeks ago

Affected rules

Rule A5-16-1 (required, implementation, automated) The ternary conditional operator shall not be used as a sub-expression.

Description

When initializing a string inside a ternary expression, A5-16-1 error is triggered.
I tried with std::uint32_t and with a class, and the error was not triggered.

Example

std::string const str{cond ? "str1" : "str2"}; // Triggers A5-16-1

Test const test{cond ? Test() : Test()}; // Ok
std::uint32_t const nb{cond ? 0 : 1}; // Ok
nbusser-sr commented 2 weeks ago

Possibly a duplicate of my own old ticket https://github.com/github/codeql-coding-standards/issues/612 :face_exhaling:
Sorry for the inconvenience

lcartey commented 2 weeks ago

Thanks @nbusser-sr! I don't think this is a duplicate, although we will likely fix this at the same time.