ホーム
おまかせ表示
ログイン
設定
MonoBookについて
免責事項
MonoBook
検索
「
静的解析ツール
」を編集中
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
'''静的解析ツール'''([[英語]]:static analysis)とは、[[ソースコード]]を食わせると、[[バグ]]の原因になりそうな箇所を指摘してくれる[[ソフトウェア]]の総称である。 ==概要== 静的解析を用いると、わざわざ[[デバッガー]]を雇い、人力で[[プログラム]]を実行して[[デバッグ]]をせずとも、人為的な[[コーディング]]時の[[バグ]]により[[エラー]]になるであろう箇所を見つけ出してくれる。 たとえば「ある[[関数]]の[[引数]]は0から100の値をとる[[仕様]]」だとすると、それを呼び出す側でそれ以外になる例外パターンは無いか、などを[[芋づる式]]に調べてくれ、例外パターンがあると[[バグ]]として報告してくれる。 なんとも夢のような技術であるが「[[契約による設計]]」に対応している[[プログラミング言語]]で[[ソースコード]]がきちんと記述されていれば凄い高い精度を叩き出すが、その他大勢の一般的な[[プログラミング言語]]では期待はずれな残念な結果しか得られないことが多い。 2024年頃から[[人工知能]]を使うことでクソみたいなソースコードでも解析できるものが登場してきた。 ==主な製品== [[契約による設計]]に対応している[[プログラミング言語]]の多くは[[コンパイラ]]の機能のひとつとして実装していることが多い。 コンパイラに機能として付いているものとしては[[D言語]]が有名である。 [[C Sharp|C#]]などの[[.NET]]系では[[共通中間言語]]([[中間コード]])を食わせるツールで対応している。 [[Visual Studio]]のお高いエディションがこれに対応しており、静的解析はビルドの過程で勝手に実行されるので[[コンパイラ]]の機能として提供されるものとの違いは特に感じないと思われる。静的解析を有効にすると、[[ビルド]]が激遅になるうえに、[[C Sharp|C#]]でちょろっと書いた[[hello world]]すら[[エラー]]でまくりで焦ること請け合いである。 ==例== 静的解析が[[コンパイラ]]に標準搭載されている[[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> ==関連項目== *[[契約による設計]] *[[コンパイラ]] [[category: プログラミング]]
編集内容の要約:
MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MonoBook:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の確認用の質問に回答してください (
詳細
):
1たす1は?(全角で入力してください)
キャンセル
編集の仕方
(新しいウィンドウで開きます)