[![Build Status](http://soot-build.cs.uni-paderborn.de/jenkins/buildStatus/icon?job=soot/heros-build)](http://soot-build.cs.uni-paderborn.de/jenkins/job/soot/job/heros-build/)
![Logo](logo/heros-logo.png)
Heros IFDS/IDE Solver
=====================
Heros is a generic implementation of an IFDS/IDE Solver that can be plugged into existing, Java-based program analysis frameworks. A reference connector exists for the [Soot][1] framework.
Heros...
* supports solving both IFDS and IDE problems,
* is multi-threaded and thus highly scalable,
* provides a simple programming interface, and
* is fully generic, i.e., can be used to formulate program analysis problems for different programming languages.
Using Heros
-----------
To get started with Heros, please consult our [wiki here](https://github.com/Sable/heros/wiki).
Who are the developers of Heros?
--------------------------------
Heros was developed and is maintained by [Eric Bodden][2].
Why is Heros called Heros?
--------------------------
The name contains (in a different order) the first characters of the last names Reps, Horwitz and Sagiv, the original inventors of the IFDS/IDE frameworks. Heros is pronounced like the Greek word, not like heroes in English.
What is IFDS/IDE in the first place?
------------------------------------
[IFDS][3] is a general framework for solving inter-procedural, finite, distributive subset problems in a flow-sensitive, fully context-sensitive manner. From a user's perspective, IFDS allows static program analysis in a template-driven manner. Users simply define flow functions for an analysis problem but don't need to worry about solving the analysis problem. The latter is automatically taken care of by the solver, in this case by Heros.
[IDE][4] is an extension of IFDS that allows more expressive computations. Heros implements an IDE solver and supports IFDS problems as special cases of IDE.
What are the unique features of Heros over other IFDS/IDE solvers?
------------------------------------------------------------------
To the best of our knowledge there exist at least two other similar solvers implemented in Java. [Wala][5] implements a solver that supports IFDS but not IDE. The solver is highly scalable but in our eyes requires more verbose definitions of client analyses. Heros is fully multi-threaded, while Wala's solver is not. There also exists a Scala-based solver by [Nomair A. Naeem, Ondrej Lhotak, and Jonathan Rodriguez][6]. This implementation does support IDE, and there exists a multi-threaded version of it, but as of yet the implementation is not publicly available.
Why did you create Heros?
-------------------------
One reason is that we found that no existing IFDS/IDE solver satisfied all our needs. The solver in Wala was available but only supported IFDs. Moreover we desired a more simple client interface. The solver by Naeem, Lhotak and Rodriguez was written in Scala. Further we wanted a solver that could be used with multiple programming languages.
The second, and probably better reason is that we found that IFDS/IDE is really useful and that probably there should be a solver that the community can build on, extend and improve over the years. But this requires clean code and documentation. When designing Heros we took special care to provide just that.
What is this all about support for multiple programming languages?
------------------------------------------------------------------
Solving an IFDS/IDE analysis problem basically requires three things:
1. An IFDS/IDE solver.
2. An implementation of an inter-procedural control-flow graph (ICFG).
3. The definition of an IFDS/IDE analysis problem in the form of flow functions.
The solver in heros is fully generic. It can be combined with any form of ICFG. Through Java's generic type variables, Heros abstracts from any concrete types such as statements and methods. To connect Heros to a program-analysis framework for a particular language, all one needs to do is to implement a special version of the ICFG. We provide a (reference implementation)[8] for Soot. Also the IFDS/IDE analysis problems need to be defined with respect to the actual programming language's constructs and semantics. They are not generic. The entire solver, however, can be reused as is. We are currently working on connecting Heros to a C/C++ compiler.
How can I contribute to Heros?
------------------------------
Contributions are more than welcome! It is easiest to fork the project on Github. Then make your modifications on the fork and send us a pull request. This will allow us easy re-integration.
Under what License can I use Heros?
-----------------------------------
Heros is released under LGPL - see [LICENSE.txt][7] for details.
Including Heros in your Project
-----------------------------------
A Heros "release" is currently built for each commit to the `master` branch. You can include Heros as
a dependency via Maven, Gradle, SBT, etc using the following coordinates:
```.xml
<dependencies>
<dependency>
<groupId>de.upb.cs.swt</groupId>
<artifactId>heros</artifactId>
<version>1.2.2-SNAPSHOT</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>sonatype-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
```
How do I obtain the nightly build?
------------------------
You can also obtain older builds of the `develop` branch. A complete listing of builds can be found on [Sonatype's SNAPSHOT repository](https://oss.sonatype.org/content/repositories/snapshots/de/upb/cs/swt/heros/).
# How do I obtain Heros without Maven?
**We recommend using Heros with Maven**
You can obtain the latest snapshot build of heros [directly](https://oss.sonatype.org/content/repositories/snapshots/de/upb/cs/swt/heros/).
The `heros-<RELEASE>-jar-with-dependencies.jar` file is an all-in-one file that also contains all the required libraries.
The `heros-<RELEASE>.jar` file contains only Soot, allowing you to manually pick dependencies as you need them. If you do not want to bother with dependencies, we recommend using the former.
[1]: http://www.sable.mcgill.ca/soot/
[2]: http://bodden.de/
[3]: http://dx.doi.org/10.1145/199448.199462
[4]: http://dx.doi.org/10.1016/0304-3975(96)00072-2
[5]: http://wala.sf.net/
[6]: http://dx.doi.org/10.1007/978-3-642-11970-5_8
[7]: https://github.com/Sable/heros/blob/master/LICENSE.txt
[8]: https://github.com/Sable/soot/blob/master/src/soot/jimple/toolkits/ide/icfg/JimpleBasedInterproceduralCFG.java
没有合适的资源?快使用搜索试试~ 我知道了~
java 项目案例,可以做学习研究用
共366个文件
class:222个
java:96个
xml:14个
需积分: 0 0 下载量 85 浏览量
2024-10-14
22:48:46
上传
评论
收藏 674KB ZIP 举报
温馨提示
java 项目案例,可以做学习研究用。
资源推荐
资源详情
资源评论
收起资源包目录
java 项目案例,可以做学习研究用 (366个子文件)
FieldSensitiveIFDSSolverTest.class 36KB
IDESolver.class 31KB
PerAccessPathMethodAnalyzer.class 20KB
FieldSensitiveTestHelper.class 17KB
TestHelper.class 12KB
ReturnSiteResolverTest.class 11KB
ReturnSiteResolver.class 10KB
FlowFunctionDotExport.class 10KB
BiDiIDESolver$SingleDirectionSolver.class 8KB
AccessPath.class 8KB
FieldSensitiveTestHelper$7.class 8KB
BiDiFieldSensitiveIFDSSolverTest.class 8KB
TestHelper$3.class 7KB
BiDiIFDSSolverTest.class 7KB
TestDebugger.class 7KB
ControlFlowJoinResolver.class 7KB
ResolverTemplate.class 7KB
ControlFlowJoinResolverTest.class 6KB
AccessPathTest.class 6KB
BiDiIDESolver$AugmentedTabulationProblem.class 6KB
FieldSensitiveTestHelper$8.class 5KB
CallEdgeResolver.class 5KB
CallEdge.class 5KB
JumpFunctions.class 5KB
SourceStmtAnnotatedMethodAnalyzer.class 5KB
FieldSensitiveIFDSSolver.class 5KB
ZeroCallEdgeResolver.class 5KB
TestHelper$4.class 5KB
BiDiIDESolver$AugmentedTabulationProblem$1.class 5KB
AccessPathHandler.class 5KB
EdgeFunctionCache.class 4KB
CallEdge$1.class 4KB
IFDSSolverTest.class 4KB
WrappedFact.class 4KB
FlowFunctionCache.class 4KB
BiDiIDESolver$AugmentedTabulationProblem$2.class 4KB
FlowFunctionDotExport$UnitFactTracker.class 4KB
JsonDocument.class 4KB
MethodAnalyzerImpl.class 4KB
FieldSensitiveTestHelper$8$1.class 4KB
BiDiIDESolver.class 4KB
WrappedFactAtStatement.class 4KB
Resolver.class 4KB
BiDiFieldSensitiveIFDSSolver.class 4KB
FieldSensitiveTestHelper$10.class 4KB
ReturnEdge.class 3KB
IDESolver$ValueComputationTask.class 3KB
AccessPath$Delta.class 3KB
Debugger$NullDebugger.class 3KB
JoinHandlingNodesIFDSSolver.class 3KB
TestHelper$5.class 3KB
BiDiIFDSSolver.class 3KB
PathTrackingIFDSSolver.class 3KB
BiDiIDESolver$AugmentedTabulationProblem$1$2.class 3KB
FlowFunction$ConstrainedFact.class 3KB
CountingThreadPoolExecutor.class 3KB
FieldSensitiveTestHelper$MethodHelper.class 3KB
DefaultValueMap.class 3KB
BiDiFieldSensitiveIFDSSolver$SynchronizerImpl.class 3KB
IFDSSolver$1.class 3KB
DeltaConstraint.class 3KB
PerAccessPathMethodAnalyzer$3.class 3KB
TestHelper$MethodHelper.class 3KB
IFDSSolver$1$IFDSEdgeFunctions.class 3KB
BiDiFieldSensitiveIFDSSolver$1.class 3KB
FieldSensitiveTestHelper$MethodHelper$1.class 3KB
BiDiIDESolver$AbstractionWithSourceStmt.class 2KB
BiDiIDESolver$AugmentedTabulationProblem$1$3.class 2KB
ReturnSiteResolver$1.class 2KB
Pair.class 2KB
PerAccessPathMethodAnalyzer$Job.class 2KB
ProfiledFlowFunctions.class 2KB
TestHelper$MethodHelper$1.class 2KB
FlowFunctionCache$ReturnKey.class 2KB
TestHelper$4$1.class 2KB
Compose.class 2KB
PathEdge.class 2KB
BiDiIDESolver$AugmentedTabulationProblem$1$4.class 2KB
FlowFunction$WriteFieldConstraint.class 2KB
BiDiIDESolver$AugmentedTabulationProblem$1$1.class 2KB
AccessPathHandler$3.class 2KB
EdgeFunctionCache$CallKey.class 2KB
FieldSensitiveTestHelper$4.class 2KB
FieldSensitiveTestHelper$3.class 2KB
FlowFunction$ReadFieldConstraint.class 2KB
FieldSensitiveTestHelper$5.class 2KB
FieldSensitiveTestHelper$2.class 2KB
EdgeFunctionCache$NDNDKey.class 2KB
ZeroedFlowFunctions.class 2KB
AccessPathHandler$2.class 2KB
Context.class 2KB
SourceStmtAnnotatedMethodAnalyzer$1.class 2KB
EdgeFunctionCache$ReturnKey.class 2KB
ControlFlowJoinResolverTest$ResolverArgumentMatcher.class 2KB
DefaultIFDSTabulationProblem.class 2KB
JoinableFact.class 2KB
CountLatch.class 2KB
ReturnSiteResolverTest$ReturnSiteResolverArgumentMatcher.class 2KB
Union.class 2KB
IFDSSolver.class 2KB
共 366 条
- 1
- 2
- 3
- 4
资源评论
pk_xz123456
- 粉丝: 1675
- 资源: 497
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Python和HTML的Chinese-estate-helper房地产爬虫及可视化设计源码
- 基于SpringBoot2.7.7的当当书城Java后端设计源码
- 基于Python和Go语言的开发工具集成与验证设计源码
- 基于Python与JavaScript的国内供应商管理系统设计源码
- aspose.words-20.12-jdk17
- 基于czsc库的Python时间序列分析设计源码
- 基于Java、CSS、JavaScript、HTML的跨语言智联平台设计源码
- 基于Java语言的day2设计源码学习与优化实践
- 基于浙江大学2024年秋冬学期软件安全原理与实践的C与Python混合语言设计源码
- 基于FastAPI和Vue3的表单填写与提交前后端一体化设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功