CXX.POSSIBLE_COPY_PASTE.TERNARY_OP
三項演算子の 'then' および 'else' ブランチでの潜在的なコピーペースト。
このチェッカーは、三項演算子の 'then' ブランチと 'else' ブランチで同じ式が使用された場合、欠陥を報告します。
脆弱コード例
コピー
void g() { cout << “g() is called”; }
void f() { cout << “f() is called”; }
void f1(bool b)
{
float value2 = b ? g() : g();
}
上記の例では、三項演算子の then ブランチと else ブランチの両方がまったく同じであるため、5 行目は不適合です。Klocwork は、5 行目で CXX.POSSIBLE_COPY_PASTE.TERNARY_OP 欠陥を報告し、「三項演算子の 'then' および 'else' ブランチでの潜在的なコピーペースト。」と表示します。
修正コード例
コピー
void g() { cout << “g() is called”; }
void f() { cout << “f() is called”; }
void f1(bool b)
{
float value2 = b ? f() : g();
}
この修正例では、Klocwork はもはや 5 行目で CXX.POSSIBLE_COPY_PASTE.TERNARY_OP 欠陥を報告しなくなります。