`A27-0-4`: C-Style (and arrays) detected when logging in assert or using the hash/stringize operator in a macro

オープン
#772 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
35/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
cpp
領域
devtools

調査の方向性

まずルール A27-0-4 と A18-1-1 の実装から始め、次に提供された C++ の例を再現してください。マクロ、assert 呼び出し、文字列化された式に対する診断を、配列または文字列を直接使用するケースと比較してください。報告された誤検知が解消され、影響を受けるルールが意図されたケースを引き続き検出できれば完了です。

索引モデルが issue の本文から書いたものです。

説明

false positive/false negative Standard-AUTOSAR
Affected rules
  • A27-0-4
  • A18-1-1
Description

Alerts of both rules are triggered even if no C-style array or string is directly used. It may also be relevant that the usage of the # operator is covered by rule M16-3-2.

Example
#include <cassert>

#define ASSERT(expr) ((expr) ? static_cast<void>(0) : [] { assert(false && #expr); }())

class a_class
{
  public:
    void some_operator()
    {
        ASSERT(flag_);
    }

  private:
    bool flag_ = false;
};

int main()
{
    assert((false) && "A way to add an assert message");
    a_class instance;
    instance.some_operator();
}

A27-0-4 and A18-1-1 alerts are signaled on ASSERT(flag_); as well as assert((false) && "A way ... message");

主要言語
CodeQL
スター
227
フォーク
82
平均マージ
6日 7時間
マージ済み PR(30日)
9

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

github/codeql-coding-standards のほかの issue

github/codeql-coding-standards の issue をすべて見る

似ている issue

DevTools の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。