Coder Social home page Coder Social logo

zhu1971 / jayhorn Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jayhorn/jayhorn

0.0 0.0 0.0 184.37 MB

Static checker for Java

Home Page: http://jayhorn.github.io/jayhorn/

License: MIT License

Shell 0.14% Java 99.56% Scala 0.28% Makefile 0.01% Dockerfile 0.01%

jayhorn's Introduction

master Build Status Coverage Status Coverity Scan Codacy Badge
devel Build Status Coverage Status Codacy Badge

Java and Horn clauses

JayHorn is a software model checking tool for Java. JayHorn tries to find a proof that certain bad states in a Java program are never reachable. These bad states are specified by adding runtime assertions (where some assertions may be generated, e.g., that an object reference must not be Null before being accessed).

JayHorn tries to err on the side of precision that is, when it is not able to proof that an assertion always holds, it will claim that the assertion may be violated (this is called soundness). JayHorn is currently sound (modulo bugs) for Java that use a single thread, have no dynamic class loading, and do not perform complex operations in static initializers.

For information on how to download and run JayHorn check our website. For information on how JayHorn is implemented check our JayHorn development blog.

Join the chat Join the chat at https://gitter.im/jayhorn/Lobby

Quick Guide

./gradlew assemble
java -jar jayhorn/build/libs/jayhorn.jar -help
java -jar jayhorn/build/libs/jayhorn.jar -j example/classes -solution -trace

Soundiness Statement

This project has been done in the spirit of soundiness. When building practical program analyses, it is often necessary to cut corners. In order to be open about language features that we do not support or support only partially, we are attaching this soundiness statement.

Our analysis does not have a fully sound handling of the following features:

  • JNI, implicit method invocations (finalizers, class initializers, Thread.<init>, etc.)
  • integer overflow
  • exceptions and flow related to that
  • reflection API (e.g., Method.invoke(), Class.newInstance )
  • invokedynamic
  • code generation at runtime, dynamic loading
  • different class loaders
  • key native methods (Object.run, Object.doPrivileged)

This statement has been produced with the Soundiness Statement Generator from soundiness.org.

Licenses

JayHorn is open-source and distributed under MIT license.

Libraries used in JayHorn include, in particular:

Acknowledgments and Disclaimers

JayHorn is partially funded by:

  • AFRL contract No. FA8750- 15-C-0010.
  • DARPA under agreement FA8750-15-2-0087
  • NSF award No. 1422705
  • The Swedish Research Council grant 2014-5484

Any opinions, findings and conclusions or recommendations expressed in this material are those of the author(s) do not necessarily reflect the views of AFRL, DARPA, NSF or the Swedish Research Council.

jayhorn's People

Contributors

martinschaef avatar pruemmer avatar ali-shamakhi avatar hsanchez avatar lememta avatar reza-ghanbari avatar danielsn avatar danieldietsch avatar peterschrammel avatar wuestholz avatar monperrus avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.