Static Contract Checking with Abstract Interpretation

被引:0
|
作者
Faehndrich, Manuel [1 ]
Logozzo, Francesco [1 ]
机构
[1] Microsoft Res, Redmond, WA USA
关键词
VERIFIER; DOMAINS;
D O I
暂无
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
We present an overview of Clousot, our current tool to statically check Code Contracts. Code Contracts enable a compiler and language-independent specification of Contracts (precondition, postconditions and object invariants). Clousot checks every method in isolation using an assume/guarantee reasoning: For each method under analysis Clousot assumes its precondition and asserts the postcondition. For each invoked method, Clousot asserts its precondition and assumes the postcondition. Clousot also checks the absence of common runtime errors, such as null-pointer errors, buffer or array overruns, divisions by zero, as well as less common ones such as checked integer overflows or floating point precision mismatches in comparisons. At the core of Clousot there is an abstract interpretation engine which infers program facts. Facts are used to discharge the assertions. The use of abstract interpretation (vs usual weakest precondition-based checkers) has two main advantages: (i) the checker automatically infers loop invariants letting the user focus only on boundary specifications; (ii) the checker is deterministic in its behavior (which abstractly mimics the flow of the program) and it can be tuned for precision and cost. Clousot embodies other techniques, such as iterative domain refinement, goal-directed backward propagation, precondition and postcondition inference, and message prioritization.
引用
收藏
页码:10 / 30
页数:21
相关论文
共 50 条
  • [1] Static Checking By Means of Abstract Interpretation
    Musumbu, Kaninda
    [J]. PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON COMPUTER SCIENCE AND INFORMATION TECHNOLOGY, 2008, : 107 - 112
  • [2] Property checking driven abstract interpretation-based static analysis
    Massé, D
    [J]. VERIFICATION, MODEL CHECKING, AND ABSTRACT INTERPRETATION, 2003, 2575 : 56 - 69
  • [3] Static contract checking for haskell
    University of Cambridge, United Kingdom
    不详
    不详
    [J]. ACM SIGPLAN Not., 1 (41-52):
  • [4] Static Contract Checking for Haskell
    Xu, Dana N.
    Jones, Simon Peyton
    Claessen, Koen
    [J]. ACM SIGPLAN NOTICES, 2009, 44 (01) : 41 - 52
  • [5] ABSTRACT INTERPRETATION FOR TYPE CHECKING
    FILE, G
    SOTTERO, P
    [J]. LECTURE NOTES IN COMPUTER SCIENCE, 1991, 528 : 311 - 322
  • [6] Refining model checking by abstract interpretation
    Ecole Normale Superieure, Paris, France
    [J]. Autom Software Eng, 1 (69-95):
  • [7] Refining Model Checking by Abstract Interpretation
    Cousot P.
    Cousot R.
    [J]. Automated Software Engineering, 1999, 6 (1) : 69 - 95
  • [8] Combining Static and Dynamic Contract Checking for Curry
    Hanus, Michael
    [J]. FUNDAMENTA INFORMATICAE, 2020, 173 (04) : 285 - 314
  • [9] Combining Static and Dynamic Contract Checking for Curry
    Hanus, Michael
    [J]. LOGIC-BASED PROGRAM SYNTHESIS AND TRANSFORMATION (LOPSTR 2017), 2018, 10855 : 323 - 340
  • [10] Partial model checking via abstract interpretation
    De Francesco, N.
    Lettieri, G.
    Martini, L.
    Vaglini, G.
    [J]. INFORMATION PROCESSING LETTERS, 2010, 110 (03) : 99 - 103