
Sturdyは、Haskellで健全な静的分析を作成するライブラリです。静的分析は、実際にプログラムを実行せずにコンピュータープログラムに関する情報を作成するツールです。静的分析の例は、タイプチェッカー、バグファインダー(Java FindBugsなど)、セキュリティの分析(テント分析など)、およびコンパイラの最適化に使用される分析です。
このプロジェクトは、音の静的分析に焦点を当てています。分析の結果がプログラムの実際のランタイム動作を反映し、ユーザーが結果に依存できる場合、静的分析は健全です。たとえば、コンパイラの最適化に使用される静的分析が不健全である場合、最適化によりプログラムのセマンティクスが変化し、実行時に予期しない動作につながる可能性があります。この目的のために、Sturdyは、抽象的な通訳と健全で再利用可能なコンポーネントの組成的健全性証明の理論に従い、抽象的な解釈のために静的分析の健全性証明を簡素化します。

頑丈なコンクリート通訳と抽象的な通訳(静的解析)を一般的なインタープリターに射撃します。この一般的なインタープリターは、 try 、 catch 、およびfinally例外のために、言語のセマンティクスを説明する原始操作を含むインターフェイスによってパラメーター化されています。その後、コンクリートと抽象的なインタープリターは、これらのインターフェイスを実装することにより、一般的なインタープリターをインスタンス化します。この再編成は、静的分析の実装におけるさまざまな懸念を分離するだけでなく、その健全性の証明を簡素化します。詳細については、ICFPペーパーをご覧ください。
Sturdyを使用すると、再利用可能な分析コンポーネントからモジュラー的に静的分析を構築できます。各分析コンポーネントは、単一の分析の懸念をカプセル化し、使用されている分析とは独立して音を証明できます。さらに、分析コンポーネントの理論は、すべての分析コンポーネントが健全である場合、静的分析が健全であることを保証します。これは、分析開発者がサウンド分析コンポーネントを再利用する限り、健全性を心配する必要がないことを意味します。詳細については、oopslaの紙をご覧ください。
構築するには、Stack Build Toolをインストールし、プロジェクトのルートディレクトリからstack buildを実行します。
現在、頑丈なプロジェクトには、次の言語の具体的および抽象的および一般的な通訳者が含まれています。
特定の言語のテストを実行するには、 stack test sturdy-$(lang) 、例えば、
stack test sturdy-pcf
ビッグステップの抽象通訳者の組み合わせベースのFixPointアルゴリズム
Sven Keidel、Sebastian Erdweg、TobiasHombücher
機能プログラミングに関する国際会議(ICFP)。 ACM、2023。[PDF]
WebAssemblyのモジュラー抽象的な定義通訳
Katharina Brandl、Sebastian Erdweg、Sven Keidel、Nils Hansen
オブジェクト指向プログラミングに関する欧州会議(Ecoop)。 ACM、2023。[PDF]
プログラム変換の抽象的な解釈に対する体系的なアプローチ
Sven KeidelとSebastian Erdweg。
検証、モデルチェック、および抽象的な解釈(VMCAI)。 Springer、2020。[PDF]
抽象的な解釈のための健全で再利用可能なコンポーネント
Sven KeidelとSebastian Erdweg。
オブジェクト指向プログラミング、システム、言語、およびアプリケーション(OOPSLA)。 ACM、2019 [PDF] [トーク]
抽象通訳者の構成の健全性証明
Sven Keidel、Casper Bach Poulsen、Sebastian Erdweg。
機能プログラミングに関する国際会議(ICFP)。 ACM、2018 [PDF] [トーク]
頑丈なプロジェクトは、次の人々の共同の努力です(アルファベット順):
キャスパー・バッハ・プルセン、ジェンテ・ヒッケス、マティジス・ビジマン、サラ・ミュラー、セバスチャン・エルドウェグ、スヴェン・ケイデル、トビアス・ホンビューチャー、wouter raateland