Giter Club home page Giter Club logo

google-summer-of-code-2022's Introduction

alt text

Gradle support for SymbolicPathFinder

The following report summarizes the work done during Google Summer of Code 2021 along with the results, scope for improvements, and future work. This also serves as the final project report with all the contributions.

Basic Info

   

Symbolic PathFinder (SPF) combines symbolic execution with model checking and constraint solving for test case generation. In this tool, programs are executed on symbolic inputs representing multiple concrete inputs. Values of variables are represented as numeric constraints generated from the analysis of the code structure. These constraints are then solved to generate test inputs guaranteed to reach that part of the code. Essentially SPF performs symbolic execution for Java programs at the bytecode level. Symbolic PathFinder uses the analysis engine of the Ames JPF model checking tool (i.e., jpf-core).

   

Work Summary

  • Migrate the build from Ant to Gradle.
  • Add jpf-core as Git-Submodule to SPF.
  • Restructuring SPF.
  • Upgrade the Gradle version of jpf-symbc (5.4.1 to 6.9).
  • Build Continuous Integration (CI) pipeline for jpf-symbc.
  • Upgrade the Documentation of jpf-symbc.

   

Overview

Gradle is a build automation tool known for its flexibility in building software. A build automation tool is used to automate the creation of applications. The building process includes compiling, linking, and packaging the code. The process becomes more consistent with the help of build automation tools. Currently, Symbolic PathFinder is using Ant as a build automation tool, but Gradle resolves all the issues faced by build tools like Maven and Ant. It is well-known to be highly customizable for different projects dealing with various technologies. We can customize the project according to the needs of the project. Gradle is popular for providing high-speed performance, nearly twice as fast as Maven. Gradle makes building common types of projects easy by adding layers of conventions and pre-built functionality through plugins. We can apply all those to enhance our SPF project. In SPF, we have introduced a Gradle multi-project build by adding jpf-core as a git-submodule plus restructuring the hole repository according to the dependencies declared.

 

  • Current Directory structure of SPF  
     SPF (Gradle Root Project)
        ---| jpf-core (Git-Submodule + Gradle Sub-Project)
        ---| jpf-symbc (Gradle Sub-Project)

After adding jpf-core as a git-submodule to the SPF, we have linked another repository to SPF, and as we know, jpf-symbc depends on artifacts produced by the jpf-core. The main goal of introducing git-submodule is to download and build jpf-symbc as well as jpf-core at once for a better user experience. In the future, if another project depends on artifacts produced by either jpf-core/jpf-symbc then we can add it at the same level as the Gradle sub-project.

  In this project, we also have added a Continuous Integration (CI) pipeline functionality, which will be triggered when code changes and any PR are made by the contributor. It should ensure all of your changes work with the rest of the code when integrated. It should also compile your code, run tests, and check that it's functional. Here, GitHub Action is used to implement the CI pipeline.

Pull Request and Git-Commits

The main Pull-Request : #79

  • ✔️ #1 git-commit Migrate the build from Ant to Gradle.
  • ✔️ #2 git-commit Add jpf-core as Git-Submodule to SPF.
  • ✔️ #3 git-commit Upgrade the Gradle version of jpf-symbc (5.4.1 to 6.9).
  • ✔️ #4 git-commit Build Continuous Integration (CI) pipeline for jpf-symbc.
  • ✔️ #5 git-commit Upgrade the Documentation of jpf-symbc.
  • ✔️ #6 git-commit Restructuring SPF.
  • ✔️ #7 PR , #8 & #9 Fixing the unexpected bugs in jpf-core i.e. adding missing import statements

Future Scope

  • Improve Junit testing by fixing some unit tests and adding new unit tests.
  • Migrating Junit 4.12 to Junit 5.
  • Updating java version 8 to 11 or 12.

Note of Thanks

It was a great experience working for three months on my project for Java Pathfinder under Google Summer of Code. I sincerely thank my mentors Yannic Noller and Corina Pasareanu whose support, guidance, and continuous encouragement helped me immensely in bringing this work where it stands.

Thanks, Google and Java Pathfinder, for giving me this opportunity.

google-summer-of-code-2022's People

Contributors

gaurangkudale avatar

Watchers

 avatar  avatar  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.