Skip to content

簡易的な制御依存解析をサポートする #42

@maxfie1d

Description

@maxfie1d

if 文のみの対応とする。

戦略

こんなプログラムがあった時に、

if ( a > 2 ) {
    b = 3;
    if ( c > 4 ) {
        d = 5;
    } else {
        e = 6;
    }
} else {
    f = 7;
}

IDは"control:"<ファイルパス>:<条件式のある行番号>とかでよかろう。
control_varsとcontrol_rangeはこの時点では決定できないので、
別変数に貯めておいてif文の終了時にテーブルに加えよう。

reflexion に与える入力

True または False にしたい条件式をJSONで指定する。

{
    "controls": [
        {
            // 指定するif文のある場所
            "file": "<ファイルパス>",
            "line": "<行番号>",
        
            // 条件式の値
            "value": "trueまたはfalse"
        }
    ]
}

出力する制御テーブルの仕様

カラム名 説明
id ifブロックに一意に割り当てられるID
file ifブロックのあるファイル名
control_range ifブロックの範囲。ファイル名と合わせてifキーワードのある行、elseキーワードのある行、if文の終了行を:....で記述する。elseが無い場合は:..とする
control_vars if条件式の中で使われている変数のID

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions