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

Ouverte
#824 0 commentaires 0 réactions 1 personne assignée Voir sur GitHub

@rak3-sh y travaille déjà.

Depuis le 22/12/2024.

Évaluation

Cette issue n'a pas encore été évaluée.

Description

Difficulty-Medium false positive/false negative Impact-Low
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.
Langage dominant
CodeQL
Étoiles
227
Forks
82
Merge moyen
6 j 7 h
PR mergées (30 j)
9

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de github/codeql-coding-standards

Toutes les issues de github/codeql-coding-standards

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.