私は frama-c Aluminium-20160502 バージョンを使用しており、大規模なプログラムの依存関係を調べたいと考えています。コマンド ラインでオプション -deps を使用すると、いくつかの依存関係が欠落していることがわかりました。特に、複数の条件が 1 つの if に結合されている場合、依存関係の分析は、1 つの条件が false になるたびに停止します。この例では、次のとおりです。
#include<stdio.h>
#include<stdbool.h>
/*Global variable definitions*/
bool A = true;
bool B = false;
bool C = true;
bool X;
bool Y;
bool res;
void main(){
if (A && B && C) {
res = X;
}else res = Y;
}
私が試したとき:frama-c -deps program.c
フレームは、次の依存関係を示しています。
[from] ====== 計算された依存関係 ======
これらの依存関係は、終了する実行の終了時に保持されます。
[from] 関数 main: res FROM A; B; よ
[from] ====== 依存関係の終わり ======
したがって、条件 B は既に false であるため、条件 C には到達しません。
条件が満たされていない場合でも、すべての依存関係を計算するように frama に指示する方法があるのだろうか。オプション -slevel を試してみましたが、結果はありませんでした。間隔 Frama_C_interval(0,1) を使用する方法があることは知っていますが、それを使用すると、この関数を使用する変数が依存関係に表示されません。X と Y を A、B、C に依存させ、res を A、B、C、X、Y に依存させたい
何か案は?