ページ ツリー

 コンテンツ

質問

データフロー解析(DFA)を実施していますが、クエリタイムアウトや関数タイムアウトが発生します。
タイムアウト値を大きくしてみましたがタイムアウトが消えません。

タイムアウト値をどのように設定すれば良いですか? 

回答

DFAに必要な時間は、コードの内容に大きく依存し、解析に使用するマシンのスペックにも影響されます。

そのため、単純にタイムアウト値をいくつに設定すればタイムアウトが発生しないと言うことはできず、『可能な限り高精度でDFAを実施する』『DFAの精度を下げて解析する』『DFAのタイムアウトやメモリ不足が発生しにくいコード』を参考に設定する必要があります。

なお、コードの内容や解析に使用するマシンのスペックにもよりますが、『DFAの精度を下げて解析する』『DFAのタイムアウトやメモリ不足が発生しにくいコード』以外の方法では、タイムアウトを発生させずに解析を完了させることは困難な場合があります。

また『可能な限り高精度でDFAを実施する』の方法でタイムアウトを発生させずに解析を完了できたとしても、QAC/QAC++DFAには『DFAの制限事項』がありますので、QAC/QAC++以外の方法による確認が不要になることはありません。

従って、クエリタイムアウトや関数タイムアウトが発生しないよう、非常に長い時間をかけて解析を実施するより、ある程度の時間でタイムアウトを発生させて解析を終え、目視レビューや動的テストと併せて確認することをお勧めします。