A15-4-4
: Query incorrectly alerts functions that raise/can raise exceptions #824
Open
Description
Affected rules
A15-4-4
Description
- Query doesn’t consider ReThrowExpr. E.g. the query says to mark
rethrow()
below asnoexcept
Example
template <bool DoRethrow>
void rethrow() {
throw;
}
int main()
{
rethrow<true>();
return 0;
}
- The query doesn’t check for throw expressions that occur inside lambdas defined in a function. E.g.
Example
void func() {
std::call_once(init_flag_, [this] {
if (sem_init(&sem_, 0, 0) != 0) {
throw std::system_error(errno, std::system_category()); // Throw in a lambda.
}
initialized_ = true;
});
}
- In some cases the noexcept specification is a complex condition involving several logical operations or template instantiations. In such a case, CodeQL’s check for whether its noexcept(true) or noexcept explicitly false doesn’t work and it alerts that it can be marked as noexcept. For practical reasons, maybe we can consider a noexcept(expr) as being marked by the user as correct.
Metadata
Assignees
Labels
Type
Projects
Status
In Progress