「静的解析ツール」の版間の差分
imported>Mono Book |
imported>Mono Book |
||
| 8行目: | 8行目: | ||
なんとも夢のような技術であるが、[[契約による設計]]に対応している[[プログラミング言語]]で[[ソースコード]]がきちんと記述されていれば凄い高い精度を叩き出すが、その他大勢の一般的な[[プログラミング言語]]では期待はずれな残念な結果しか得られないことが多い。 | なんとも夢のような技術であるが、[[契約による設計]]に対応している[[プログラミング言語]]で[[ソースコード]]がきちんと記述されていれば凄い高い精度を叩き出すが、その他大勢の一般的な[[プログラミング言語]]では期待はずれな残念な結果しか得られないことが多い。 | ||
==例== | |||
静的解析が[[コンパイラ]]に標準搭載されている[[D言語]]の記述例。 | |||
関数square_rootを呼び出してる箇所で引数xが0未満になる可能性のあるところはすべて[[コンパイルエラー]]となる。 | |||
<source lang="d"> | |||
long square_root(long x) | |||
in | |||
{//事前条件 | |||
assert(0 <= x); | |||
} | |||
out (result) | |||
{//事後条件 | |||
assert((result * result) <= x && x < (result+1) * (result+1)); | |||
} | |||
body | |||
{//関数本体 | |||
return cast(long)std.math.sqrt(cast(real)x); | |||
} | |||
</source> | |||
==関連項目== | ==関連項目== | ||