Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A15-4-4: Query incorrectly alerts functions that raise/can raise exceptions #824

Open
Assignees
Labels
Difficulty-MediumA false positive or false negative report which is expected to take 1-5 days effort to address Impact-Low false positive/false negativeAn issue related to observed false positives or false negatives.
@rak3-sh

Description

Affected rules

A15-4-4

Description

  1. Query doesn’t consider ReThrowExpr. E.g. the query says to mark rethrow() below as noexcept

Example

template <bool DoRethrow>
void rethrow() {
 throw;
}
int main()
{
 rethrow<true>();
 return 0;
}
  1. 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;
 });
 }
  1. 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

Metadata

Assignees

Labels

Difficulty-MediumA false positive or false negative report which is expected to take 1-5 days effort to address Impact-Low false positive/false negativeAn issue related to observed false positives or false negatives.

Type

No type

Projects

Status

In Progress

Milestone

No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      AltStyle によって変換されたページ (->オリジナル) /