Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1007/11513988_45guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Incremental algorithms for inter-procedural analysis of safety properties

Published: 06 July 2005 Publication History

Abstract

Automaton-based static program analysis has proved to be an effective tool for bug finding. Current tools generally re-analyze a program from scratch in response to a change in the code, which can result in much duplicated effort. We present an inter-procedural algorithm that analyzes incrementally in response to program changes and present experiments for a null-pointer dereference analysis. It shows a substantial speed-up over re-analysis from scratch, with a manageable amount of disk space used to store information between analysis runs.

References

[1]
Hallem, S., Chelf, B., Xie, Y., Engler, D.: A system and language for building system-specific, static analyses. In: PLDI, Berlin, Germany (2002) 69-82.
[2]
Holzmann, G.: Static source code checking for user-defined properties. In: Integrated Design and Process Technology (IDPT), Pasadena, CA (2002).
[3]
Ball, T., Rajamani, S.K.: The SLAM toolkit. In: CAV, Paris, France (2001) 260-264.
[4]
Reps, T., Horwitz, S., Sagiv, S.: Precise interprocedural dataflow analysis via graph reachability. In: POPL, San Francisco, CA (1995) 49-61.
[5]
Esparza, J., Schwoon, S.: A BDD-based model checker for recursive programs. In: CAV, Paris, France (2001) 324-336.
[6]
Alur, R., Etessami, K., Yannakakis, M.: Analysis of recursive state machines. In: CAV, Paris, France (2001) 207-220.
[7]
Benedikt, M., Godefroid, P., Reps, T.: Model checking of unrestricted hierarchical state machines. In: ICALP, Crete, Greece (2001) 652-666.
[8]
Dams, D., Namjoshi, K.S.: Orion: High-precision static error analysis for C and C++ programs. Technical report, Bell Labs (2003).
[9]
Saff, D., Ernst, M.D.: An experimental evaluation of continuous testing during development. In: ISSTA, Boston, MA (2004) 76-85.
[10]
Dijkstra, E.: Guarded commands, nondeterminacy, and formal derivation of programs. Communications of the ACM 18 (1975).
[11]
Conway, C.L., Namjoshi, K.S., Dams, D., Edwards, S.A.: Incremental algorithms for inter-procedural analysis of safety properties. Technical Report CUCS-018-05, Columbia University, New York, NY (2005).
[12]
Reps, T.: Optimal-time incremental semantic analysis for syntax-directed editors. In: POPL, Albuquerque, NM (1982) 169-176.
[13]
Ramalingam, G., Reps, T.: On the computational complexity of dynamic graph problems. Theoretical Computer Science 158 (1996) 233-277.
[14]
Hesse, W.: The dynamic complexity of transitive closure is in DynTC0. Theoretical Computer Science 3 (2003) 473-485.
[15]
Schmidt, D., Steffen, B.: Program analysis as model checking of abstract interpretations. In: SAS, Pisa, Italy (1998) 351-380.
[16]
McCarthy, J.: Recursive functions of symbolic expressions and their computation by machine. Communications of the ACM 3 (1960) 184-195.
[17]
Wilson, P.: Uniprocessor garbage collection techniques. In: International Workshop on Memory Management (IWMM), Saint-Malo, France (1992) 1-42.
[18]
Yur, J.S., Ryder, B., Landi, W., Stocks, P.: Incremental analysis of side effects for C software systems. In: ICSE, Los Angeles, CA (1997) 422-432.
[19]
Yur, J.S., Ryder, B., Landi, W.: An incremental flow- and context-sensitive pointer aliasing analysis. In: ICSE, Boston, MA (1999) 442-451.
[20]
Vivien, F., Rinard, M.: Incrementalized pointer and escape analysis. In: PLDI, Snowbird, Utah (2001) 69-82.
[21]
Ramalingam, G., Reps, T.: A categorized bibliography on incremental computation. In: POPL, Charleston, SC (1993) 502-510.
[22]
Sittampalam, G., de Moor, O., Larsen, K.: Incremental execution of transformation specifications. In: POPL, Venice, Italy (2004) 26-38.
[23]
Liu, Y.A., Stoller, S.D., Teitelbaum, T.: Static caching for incremental computation. ACM Trans. on Programming Languages and Systems 20 (1998) 546-585.
[24]
Horwitz, S., Demers, A., Teitelbaum, T.: An efficient general iterative algorithm for dataflow analysis. Acta Informatica 24 (1987) 6790-694.
[25]
Ryder, B., Marlowe, T.: An efficient hybrid algorithm for incremental data flow analysis. In: POPL, San Francisco, CA (1990) 184-196.
[26]
Saha, D., Ramakrishnan, C.: Incremental evaluation of tabled logic programs. In: ICLP, Mumbai, India (2003) 392-406.
[27]
Saha, D., Ramakrishnan, C.: Incremental and demand driven points to analysis using logic programming. Provided by authors (2004).
[28]
Doyle, J.: A truth maintenance system. Artificial Intelligence 12 (1979) 231-272.
[29]
Sokolsky, O., Smolka, S.: Incremental model checking in the modal mu-calculus. In: CAV, Stanford, CA (1994) 351-363.
[30]
Henzinger, T., Jhala, R., Majumdar, R., Sanvido, M.: Extreme model checking. In: Verification: Theory and Practice, Sicily, Italy (2003) 332-358.
[31]
Chen, H., Wagner, D.: MOPS: an infrastructure for examining security properties of software. In: CCS, Washington, DC (2002) 235-244.

Cited By

View all
  • (2022)Input splitting for cloud-based static application security testing platformsProceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3540250.3558944(1367-1378)Online publication date: 7-Nov-2022
  • (2021)Faster Pushdown Reachability Analysis with Applications in Network VerificationAutomated Technology for Verification and Analysis10.1007/978-3-030-88885-5_12(170-186)Online publication date: 18-Oct-2021
  • (2020)Termination analysis for evolving programs: an incremental approach by reusing certified modulesProceedings of the ACM on Programming Languages10.1145/34282674:OOPSLA(1-27)Online publication date: 13-Nov-2020
  • Show More Cited By

Index Terms

  1. Incremental algorithms for inter-procedural analysis of safety properties
    Index terms have been assigned to the content through auto-classification.

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image Guide Proceedings
    CAV'05: Proceedings of the 17th international conference on Computer Aided Verification
    July 2005
    564 pages
    ISBN:3540272313

    Sponsors

    • Jasper Design Automation: Jasper Design Automation
    • Weizmann Institute: Weizmann Institute
    • Microsoft: Microsoft
    • Intel: Intel
    • IBM: IBM

    Publisher

    Springer-Verlag

    Berlin, Heidelberg

    Publication History

    Published: 06 July 2005

    Qualifiers

    • Article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)0
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 26 Sep 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2022)Input splitting for cloud-based static application security testing platformsProceedings of the 30th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3540250.3558944(1367-1378)Online publication date: 7-Nov-2022
    • (2021)Faster Pushdown Reachability Analysis with Applications in Network VerificationAutomated Technology for Verification and Analysis10.1007/978-3-030-88885-5_12(170-186)Online publication date: 18-Oct-2021
    • (2020)Termination analysis for evolving programs: an incremental approach by reusing certified modulesProceedings of the ACM on Programming Languages10.1145/34282674:OOPSLA(1-27)Online publication date: 13-Nov-2020
    • (2019)Fixpoint reuse for incremental JavaScript analysisProceedings of the 8th ACM SIGPLAN International Workshop on State Of the Art in Program Analysis10.1145/3315568.3329964(2-7)Online publication date: 22-Jun-2019
    • (2016)Improving trace-based JIT optimisation using whole-program informationProceedings of the 8th International Workshop on Virtual Machines and Intermediate Languages10.1145/2998415.2998418(16-23)Online publication date: 31-Oct-2016
    • (2016)Editorial: Journal-First Publication for the Software Engineering CommunityIEEE Transactions on Software Engineering10.1109/TSE.2015.250031842:1(1-1)Online publication date: 7-Jan-2016
    • (2016)Supporting Self-Adaptation via Quantitative Verification and Sensitivity Analysis at Run TimeIEEE Transactions on Software Engineering10.1109/TSE.2015.242131842:1(75-99)Online publication date: 1-Jan-2016
    • (2016)Component-based verification using incremental design and invariantsSoftware and Systems Modeling (SoSyM)10.1007/s10270-014-0410-815:2(427-451)Online publication date: 1-May-2016
    • (2014)Incremental reachability checking of KernelC programs using matching logicCompanion Proceedings of the 36th International Conference on Software Engineering10.1145/2591062.2591197(724-726)Online publication date: 31-May-2014
    • (2013)eVolCheckProceedings of the 19th international conference on Tools and Algorithms for the Construction and Analysis of Systems10.1007/978-3-642-36742-7_21(292-307)Online publication date: 16-Mar-2013
    • Show More Cited By

    View Options

    View options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media