{"id":13441185,"url":"https://github.com/SVF-tools/SVF","last_synced_at":"2025-03-20T11:37:28.731Z","repository":{"id":33261496,"uuid":"36905975","full_name":"SVF-tools/SVF","owner":"SVF-tools","description":"Static Value-Flow Analysis Framework for Source Code","archived":false,"fork":false,"pushed_at":"2024-05-23T05:52:20.000Z","size":18778,"stargazers_count":1314,"open_issues_count":277,"forks_count":418,"subscribers_count":56,"default_branch":"master","last_synced_at":"2024-05-23T06:27:13.137Z","etag":null,"topics":["code-analysis","code-security","dependency-analysis","llvm","pointer-analysis","points-to-analysis","source-code-analysis","static-analysis","static-analyzer","static-value-flow"],"latest_commit_sha":null,"homepage":"http://svf-tools.github.io/SVF/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SVF-tools.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.TXT","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-06-05T01:52:24.000Z","updated_at":"2024-05-28T06:04:09.113Z","dependencies_parsed_at":"2023-12-28T06:38:45.527Z","dependency_job_id":"cde8296c-007a-4ee7-b69d-f80d05abcfc5","html_url":"https://github.com/SVF-tools/SVF","commit_stats":{"total_commits":2461,"total_committers":100,"mean_commits":24.61,"dds":0.6684274685087364,"last_synced_commit":"30cf19fbb7df37bac680d05743f81af9c3d39b2d"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SVF-tools%2FSVF","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SVF-tools%2FSVF/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SVF-tools%2FSVF/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SVF-tools%2FSVF/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SVF-tools","download_url":"https://codeload.github.com/SVF-tools/SVF/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221759943,"owners_count":16876322,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["code-analysis","code-security","dependency-analysis","llvm","pointer-analysis","points-to-analysis","source-code-analysis","static-analysis","static-analyzer","static-value-flow"],"created_at":"2024-07-31T03:01:30.874Z","updated_at":"2025-03-20T11:37:28.722Z","avatar_url":"https://github.com/SVF-tools.png","language":"C++","funding_links":[],"categories":["C++","Starchart"],"sub_categories":[],"readme":"\u003cimg src=\"./docs/images/svf_logo_2.png\" width=\"15%\"\u003e\u003cimg src=\"./docs/images/svf_logo_3.png\" width=\"85%\"\u003e\n\n\n## News\n* \u003cb\u003eNew course [Software Security Analysis](https://github.com/SVF-tools/Software-Security-Analysis) for learning code analysis and verification with SVF for fun and expertise! \u003c/b\u003e\n* \u003cb\u003eSVF now supports LLVM-16.0.0 with opaque pointers (Contributed by [Xiao Cheng](https://github.com/jumormt)). \u003c/b\u003e\n* \u003cb\u003eModernize SVF's CMake (Contributed by [Johannes](https://github.com/Johanmyst)). \u003c/b\u003e\n* \u003cb\u003eSVF now supports LLVM-13.0.0 (Thank [Shengjie Xu](https://github.com/xushengj) for his help!). \u003c/b\u003e\n* \u003cb\u003e[Object clustering](https://github.com/SVF-tools/SVF/wiki/Object-Clustering) published in our [OOPSLA paper](https://yuleisui.github.io/publications/oopsla21.pdf) is now available in SVF \u003c/b\u003e\n* \u003cb\u003e[Hash-Consed Points-To Sets](https://github.com/SVF-tools/SVF/wiki/Hash-Consed-Points-To-Sets) published in our [SAS paper](https://yuleisui.github.io/publications/sas21.pdf) is now available in SVF \u003c/b\u003e\n* \u003cb\u003e Learning or teaching Software Analysis? Check out [SVF-Teaching](https://github.com/SVF-tools/SVF-Teaching)! \u003c/b\u003e\n* \u003cb\u003eSVF now supports LLVM-12.0.0 (Thank [Xiyu Yang](https://github.com/sherlly/) for her help!). \u003c/b\u003e\n* \u003cb\u003e[VSFS](https://github.com/SVF-tools/SVF/wiki/VSFS) published in our [CGO paper](https://yuleisui.github.io/publications/cgo21.pdf) is now available in SVF \u003c/b\u003e\n* \u003cb\u003e[TypeClone](https://github.com/SVF-tools/SVF/wiki/TypeClone) published in our [ECOOP paper](https://yuleisui.github.io/publications/ecoop20.pdf) is now available in SVF \u003c/b\u003e\n* \u003cb\u003eSVF now uses a single script for its build. Just type [`source ./build.sh`](https://github.com/SVF-tools/SVF/blob/master/build.sh) in your terminal, that's it!\u003c/b\u003e\n* \u003cb\u003eSVF now supports LLVM-10.0.0! \u003c/b\u003e\n* \u003cb\u003eWe thank [bsauce](https://github.com/bsauce) for writing a user manual of SVF ([link1](https://www.jianshu.com/p/068a08ec749c) and [link2](https://www.jianshu.com/p/777c30d4240e)) in Chinese \u003c/b\u003e\n* \u003cb\u003eSVF now supports LLVM-9.0.0 (Thank [Byoungyoung Lee](https://github.com/SVF-tools/SVF/issues/142) for his help!). \u003c/b\u003e\n* \u003cb\u003eSVF now supports a set of [field-sensitive pointer analyses](https://yuleisui.github.io/publications/sas2019a.pdf). \u003c/b\u003e\n* \u003cb\u003e[Use SVF as an external lib](https://github.com/SVF-tools/SVF-example) for your own project (Contributed by [Hongxu Chen](https://github.com/HongxuChen)). \u003c/b\u003e\n* \u003cb\u003eSVF now supports LLVM-7.0.0. \u003c/b\u003e\n* \u003cb\u003eSVF now supports Docker. [Try SVF in Docker](https://github.com/SVF-tools/SVF/wiki/Try-SVF-in-Docker)! \u003c/b\u003e\n* \u003cb\u003eSVF now supports [LLVM-6.0.0](https://github.com/svf-tools/SVF/pull/38) (Contributed by [Jack Anthony](https://github.com/jackanth)). \u003c/b\u003e\n* \u003cb\u003eSVF now supports [LLVM-4.0.0](https://github.com/svf-tools/SVF/pull/23) (Contributed by Jared Carlson. Thank [Jared](https://github.com/jcarlson23) and [Will](https://github.com/dtzWill) for their in-depth [discussions](https://github.com/svf-tools/SVF/pull/18) about updating SVF!) \u003c/b\u003e\n* \u003cb\u003eSVF now supports analysis for C++ programs.\u003c/b\u003e\n\u003cbr /\u003e\n\n## Documentation\n\n\u003cbr /\u003e\n\n\u003cb\u003eSVF\u003c/b\u003e is a static value-flow analysis tool for LLVM-based languages. \u003cb\u003eSVF\u003c/b\u003e ([CC'16](https://yuleisui.github.io/publications/cc16.pdf)) is able to perform\n* [AE](https://github.com/SVF-tools/SVF/tree/master/svf/include/AE) (\u003cb\u003eabstract execution\u003c/b\u003e): cross-domain execution ([ICSE'24](https://yuleisui.github.io/publications/icse24a.pdf)), typestate analysis ([FSE'24](https://yuleisui.github.io/publications/fse24a.pdf));\n* [WPA](https://github.com/SVF-tools/SVF/tree/master/svf/include/WPA) (\u003cb\u003ewhole program analysis\u003c/b\u003e): field-sensitive ([SAS'19](https://yuleisui.github.io/publications/sas2019a.pdf)), flow-sensitive ([CGO'21](https://yuleisui.github.io/publications/cgo21.pdf), [OOPSLA'21](https://yuleisui.github.io/publications/oopsla21.pdf)) analysis;\n* [DDA](https://github.com/SVF-tools/SVF/tree/master/svf/include/DDA) (\u003cb\u003edemand-driven analysis\u003c/b\u003e): flow-sensitive, context-sensitive points-to analysis ([FSE'16](https://yuleisui.github.io/publications/fse16.pdf), [TSE'18](https://yuleisui.github.io/publications/tse18.pdf));\n* [MSSA](https://github.com/SVF-tools/SVF/tree/master/svf/include/MSSA) (\u003cb\u003ememory SSA form construction\u003c/b\u003e): memory regions, side-effects, SSA form ([JSS'18](https://yuleisui.github.io/publications/jss18.pdf));\n* [SABER](https://github.com/SVF-tools/SVF/tree/master/svf/include/SABER) (\u003cb\u003ememory error checking\u003c/b\u003e): memory leaks and double-frees ([ISSTA'12](https://yuleisui.github.io/publications/issta12.pdf), [TSE'14](https://yuleisui.github.io/publications/tse14.pdf), [ICSE'18](https://yuleisui.github.io/publications/icse18a.pdf));\n* [MTA](https://github.com/SVF-tools/SVF/tree/master/svf/include/MTA) (\u003cb\u003eanalysis of multithreaded programs\u003c/b\u003e): value-flows for multithreaded programs ([CGO'16](https://yuleisui.github.io/publications/cgo16.pdf));\n* [CFL](https://github.com/SVF-tools/SVF/tree/master/svf/include/CFL) (\u003cb\u003econtext-free-reachability analysis\u003c/b\u003e): standard CFL solver, graph and grammar ([OOPSLA'22](https://yuleisui.github.io/publications/oopsla22.pdf), [PLDI'23](https://yuleisui.github.io/publications/pldi23.pdf));\n* [SVFIR](https://github.com/SVF-tools/SVF/tree/master/svf/include/SVFIR) and [MemoryModel](https://github.com/SVF-tools/SVF/tree/master/svf/include/MemoryModel) (\u003cb\u003eSVFIR\u003c/b\u003e): SVFIR, memory abstraction and points-to data structure ([SAS'21](https://yuleisui.github.io/publications/sas21.pdf));\n* [Graphs](https://github.com/SVF-tools/SVF/tree/master/svf/include/Graphs): \u003cb\u003e generating a variety of graphs\u003c/b\u003e, including call graph, ICFG, class hierarchy graph, constraint graph, value-flow graph for static analyses and code embedding ([OOPSLA'20](https://yuleisui.github.io/publications/oopsla20.pdf), [TOSEM'21](https://yuleisui.github.io/publications/tosem21.pdf))\n\n\u003cp\u003eWe release the SVF source code with the hope of benefiting the open-source community. You are kindly requested to acknowledge usage of the tool by referring to or citing relevant publications above. \u003c/p\u003e\n\n\u003cb\u003eSVF\u003c/b\u003e's doxygen document is available [here](https://svf-tools.github.io/SVF-doxygen/html).\n\n\u003cbr /\u003e\n\n| About SVF       | Setup  Guide         | User Guide  | Developer Guide  |\n| ------------- |:-------------:| -----:|-----:|\n| ![About](https://github.com/svf-tools/SVF/blob/master/docs/images/help.png?raw=true)| ![Setup](https://github.com/svf-tools/SVF/blob/master/docs/images/tools.png?raw=true)  | ![User](https://github.com/svf-tools/SVF/blob/master/docs/images/users.png?raw=true)  |  ![Developer](https://github.com/svf-tools/SVF/blob/master/docs/images/database.png?raw=true) \n| Introducing SVF -- [what it does](https://github.com/svf-tools/SVF/wiki/About#what-is-svf) and [how we design it](https://github.com/svf-tools/SVF/wiki/SVF-Design#svf-design)      | A step by step [setup guide](https://github.com/svf-tools/SVF/wiki/Setup-Guide#getting-started) to build SVF | Command-line options to [run SVF](https://github.com/svf-tools/SVF/wiki/User-Guide#quick-start), get [analysis outputs](https://github.com/svf-tools/SVF/wiki/User-Guide#analysis-outputs), and test SVF with [an example](https://github.com/svf-tools/SVF/wiki/Analyze-a-Simple-C-Program) or [PTABen](https://github.com/SVF-tools/PTABen) | Detailed [technical documentation](https://github.com/svf-tools/SVF/wiki/Technical-documentation) and how to [write your own analyses](https://github.com/svf-tools/SVF/wiki/Write-your-own-analysis-in-SVF) in SVF or [use SVF as a lib](https://github.com/SVF-tools/SVF-example) for your tool, and the [course](https://github.com/SVF-tools/Software-Security-Analysis) on SVF  |\n\n\u003cbr /\u003e\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSVF-tools%2FSVF","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSVF-tools%2FSVF","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSVF-tools%2FSVF/lists"}