Awesome
<img src="./docs/images/svf_logo_2.png" width="15%"><img src="./docs/images/svf_logo_3.png" width="85%">
News
- <b>New course Software Security Analysis for learning code analysis and verification with SVF for fun and expertise! </b>
- <b>SVF now supports LLVM-16.0.0 with opaque pointers (Contributed by Xiao Cheng). </b>
- <b>Modernize SVF's CMake (Contributed by Johannes). </b>
- <b>SVF now supports LLVM-13.0.0 (Thank Shengjie Xu for his help!). </b>
- <b>Object clustering published in our OOPSLA paper is now available in SVF </b>
- <b>Hash-Consed Points-To Sets published in our SAS paper is now available in SVF </b>
- <b> Learning or teaching Software Analysis? Check out SVF-Teaching! </b>
- <b>SVF now supports LLVM-12.0.0 (Thank Xiyu Yang for her help!). </b>
- <b>VSFS published in our CGO paper is now available in SVF </b>
- <b>TypeClone published in our ECOOP paper is now available in SVF </b>
- <b>SVF now uses a single script for its build. Just type
source ./build.sh
in your terminal, that's it!</b> - <b>SVF now supports LLVM-10.0.0! </b>
- <b>We thank bsauce for writing a user manual of SVF (link1 and link2) in Chinese </b>
- <b>SVF now supports LLVM-9.0.0 (Thank Byoungyoung Lee for his help!). </b>
- <b>SVF now supports a set of field-sensitive pointer analyses. </b>
- <b>Use SVF as an external lib for your own project (Contributed by Hongxu Chen). </b>
- <b>SVF now supports LLVM-7.0.0. </b>
- <b>SVF now supports Docker. Try SVF in Docker! </b>
- <b>SVF now supports LLVM-6.0.0 (Contributed by Jack Anthony). </b>
- <b>SVF now supports LLVM-4.0.0 (Contributed by Jared Carlson. Thank Jared and Will for their in-depth discussions about updating SVF!) </b>
- <b>SVF now supports analysis for C++ programs.</b> <br />
Documentation
<br /><b>SVF</b> is a static value-flow analysis tool for LLVM-based languages. <b>SVF</b> (CC'16) is able to perform
- AE (<b>abstract execution</b>): cross-domain execution (ICSE'24), typestate analysis (FSE'24);
- WPA (<b>whole program analysis</b>): field-sensitive (SAS'19), flow-sensitive (CGO'21, OOPSLA'21) analysis;
- DDA (<b>demand-driven analysis</b>): flow-sensitive, context-sensitive points-to analysis (FSE'16, TSE'18);
- MSSA (<b>memory SSA form construction</b>): memory regions, side-effects, SSA form (JSS'18);
- SABER (<b>memory error checking</b>): memory leaks and double-frees (ISSTA'12, TSE'14, ICSE'18);
- MTA (<b>analysis of multithreaded programs</b>): value-flows for multithreaded programs (CGO'16);
- CFL (<b>context-free-reachability analysis</b>): standard CFL solver, graph and grammar (OOPSLA'22, PLDI'23);
- SVFIR and MemoryModel (<b>SVFIR</b>): SVFIR, memory abstraction and points-to data structure (SAS'21);
- Graphs: <b> generating a variety of graphs</b>, including call graph, ICFG, class hierarchy graph, constraint graph, value-flow graph for static analyses and code embedding (OOPSLA'20, TOSEM'21)
<b>SVF</b>'s doxygen document is available here.
<br />About SVF | Setup Guide | User Guide | Developer Guide |
---|---|---|---|
Introducing SVF -- what it does and how we design it | A step by step setup guide to build SVF | Command-line options to run SVF, get analysis outputs, and test SVF with an example or PTABen | Detailed technical documentation and how to write your own analyses in SVF or use SVF as a lib for your tool, and the course on SVF |