
Sturdy는 Haskell에서 사운드 정적 분석을 만드는 라이브러리입니다. 정적 분석은 실제로 프로그램을 실행하지 않고 컴퓨터 프로그램에 대한 정보를 제작하는 도구입니다. 정적 분석의 예로는 유형 체커, 버그 파인더 (예 : Java FindBugs), 보안 분석 (예 : 오염 분석) 및 컴파일러 최적화에 사용되는 분석이 있습니다.
이 프로젝트는 사운드 정적 분석에 중점을 둡니다. 분석 결과가 프로그램의 실제 런타임 동작을 반영하고 사용자가 결과에 의존 할 수있는 경우 정적 분석은 소리입니다. 예를 들어, 컴파일러 최적화에 사용되는 정적 분석이 불분명 한 경우 최적화가 프로그램의 의미를 변경하여 런타임시 예기치 않은 동작으로 이어질 수 있습니다. 이를 위해 Sturdy는 정적 분석의 건전성 증명을 단순화하기 위해 추상적 해석을 위해 추상적 인 통역사 와 사운드 및 재사용 가능한 구성 요소 의 구성 소리 증명 이론을 따릅니다.

견고한 콘크리트 통역사와 추상 통역사 (정적 분석)를 일반 통역사 로 인수합니다. 이 일반 통역사는 try , catch 및 finally 예외를 위해 언어의 의미를 설명하는 원시 연산을 포함하는 인터페이스에 의해 매개 변수화됩니다. 그런 다음 콘크리트 및 추상 통역사는 이러한 인터페이스를 구현하여 일반 통역사를 인스턴스화합니다. 이러한 재구성은 정적 분석의 구현에서 다양한 관심사를 해소 할뿐만 아니라 건전성 증거를 단순화합니다. 자세한 내용은 ICFP 용지에서 찾을 수 있습니다.
Sturdy는 재사용 가능한 분석 구성 요소에서 모듈 식 분석을 모듈 식으로 구성 할 수 있습니다. 각 분석 구성 요소는 단일 분석 문제를 캡슐화하고 사용되는 분석과 독립적으로 사운드로 입증 될 수 있습니다. 또한 분석 구성 요소 이론은 모든 분석 구성 요소가 사운드 인 경우 정적 분석이 사운드임을 보장합니다. 즉, 분석 개발자는 사운드 분석 구성 요소를 재사용하는 한 건전성에 대해 걱정할 필요가 없습니다. 자세한 내용은 oopsla 용지에서 찾을 수 있습니다.
빌드를 위해 스택 빌드 도구를 설치하고 프로젝트의 루트 디렉토리에서 stack build 실행하십시오.
튼튼한 프로젝트에는 현재 다음 언어에 대한 콘크리트 및 추상 및 일반 통역사가 포함되어 있습니다.
특정 언어 사용 stack test sturdy-$(lang) , 예를 들어,
stack test sturdy-pcf
큰 단계 초록 통역사를위한 콤비네이터 기반 Fixpoint 알고리즘
Sven Keidel, Sebastian Erdweg, Tobias Hombü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] [Talk]
추상 통역사의 구성 소리 증명
Sven Keidel, Casper Bach Poulsen 및 Sebastian Erdweg.
기능적 프로그래밍에 관한 국제 회의 (ICFP). ACM, 2018 [PDF] [Talk]
튼튼한 프로젝트는 다음 사람들의 공동 노력입니다 (알파벳 순서로).
Casper Bach Poulsen, Jente Hidskes, Matthijs Bijman, Sarah Müller, Sebastian Erdweg, Sven Keidel, Tobias Hombücher, Wouter Raateland