Skip to content
This repository has been archived by the owner on Jul 30, 2021. It is now read-only.
karelklic edited this page Feb 6, 2013 · 58 revisions

Canal is a static analysis tool designed to analyze behaviour of application programs written in C. It is a research project based on the theoretical framework of abstract interpretation, with focus on the scalability to large programs and proper handling of real-world source code.

The development is graciously supported by Red Hat and Masaryk University.

Downloads

Download now: canal-2.zip.
See Canal 2 Release Notes.

The upcoming release is Canal 3. You can track its progress in the Third release milestone.

Get Involved

Canal has a small team of contributors and lots of interesting experiments waiting to be done. If you are a developer, you can join us to advance practical static analysis of application programs. If you are a student, check the bachelor and master thesis topics.

Current Team

  • Karel Klíč (project management): xklic at fi.muni.cz
  • Tomáš Brukner (integer abstract domains): tomas.brukner at gmail.com
  • Matej Šuta (string abstract domains): suta.matej at gmail.com
  • Jan Dupal (reduced product): dupal.j at gmail.com

Face to Face Meetings

Project status is discussed on weekly meetings, held Tuesdays at 5pm in room G219, 1st floor of building B in Gotex, Šumavská 15, Brno, Czech Republic. The meetings are public and you are welcomed to come. Various topics related to Canal and its applications can be discussed.

Development

Resources

  • Abstract interpretation overviews:
  • Abstract Interpretation References
  • Events related to abstract interpretation
  • Foundations:
  • LLVM:
    • Chris Lattner and Vikram Adve. [[LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation|http://llvm.org/pubs/2004-01-30-CGO-LLVM.html]]. In CGO ’04: Proceedings of the International Symposium on Code Generation and Optimization: Feedback-directed and Runtime Optimization, 2004.
    • Jianzhou Zhao, Santosh Nagarakatte, Milo M. K. Martin, and Steve Zdancewic. [[Formalizing the LLVM Intermediate Representation for Verified Program Transformations|http://www.cis.upenn.edu/~jianzhou/Vellvm/]]. In POPL ’12: Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages,
  • LLVM Related Publications page on llvm.org
  • Projects:
    • UFO - an LLVM-based framework for verifying (and finding bugs in) sequential C programs
    • PAGAI - an LLVM-based static analyser based on abstract interpretation
    • bugst - a collection of C++ libraries providing static program analyses
    • CPAchecker - a configurable software verification tool
    • SMACK - a LLVM-based static checker of properties of programs written in C/C++