Giter Club home page Giter Club logo

main's Introduction

Installation Instructions | Video Demo | Background | User Manual | Theoretical Background | Developer Guide | Tippers' List

Development Status

Build Status codecov

Articles

  • Y. Gil and M. Orrú, “Code spartanization: One Rational Approach for Resolving Religious Style Wars” in Proc. of SAC’17, the 32nd ACM Symposium on Applied Computing, Marrakesh, Morocco, April 3–7 2017.

  • Y. Gil and M. Orrù, "The Spartanizer: Massive automatic refactoring," 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER), Klagenfurt, 2017, pp. 477-481. doi: 10.1109/SANER.2017.7884657 IEEExplore

  • The Spartanizer on IEEE Software Blog

The Spartanizer is:

  • An Eclipse plugin
  • Offers in the problems view tips for simplifying your code
  • Make your code laconic: say much in few words.
  • Platform for other research: nano-patterns, source to source transformation, and The Athenizer

The Spartanizer applies the principles of Spartan Programming to your Java code. It applies many different tippers, which are little rules that provide suggestions on how to shorten and simplify your code, e.g, by using fewer variables, factoring out common structures, more efficient use of control flow, etc.

The Spartanizer help you make a sequence small, nano-refactorings of your code, to make it shorter, and more conforming to a language of nano-patterns. The resulting code is not just shorter, it is more regular. The spartanization process tries to remove as many distracting details and variations from the code, stripping it to its bare bone.

This includes removal of piles of syntactic baggage, which is code that does nothing, except for being there: curly brackets around one statement, initializations which reiterate the default, modifiers which do not change the semantics, implicit call to super() which every constructor has, fancy, but uselessly long variable names, variables which never vary and contain temporaries and many more. Overall, the Spartanizer has over 100 tippers.

This project was conceived as an academic project in the Technion - Israel Institute of Technology, and was later developed for several years by different students and members of the Computer Science faculty.

The refactorings made by this plug-in are based on the concept of Spartan Programming, which suggests guidelines for writing short, clean code. There's a lot of reading material on the subject in the project wiki.

License

The project is available under the MIT License

main's People

Contributors

yossigil avatar orimarco avatar oriroth avatar m4tt30rru avatar dormaayan avatar yuvalsimon avatar dngreenst avatar ravivos avatar nivshalmon avatar michalcohen avatar mdoron avatar roeiraz avatar danielmittelman avatar m4tteo avatar orenafek avatar roeymaor avatar annabel7 avatar amirsagiv83 avatar danabra avatar sharonkl avatar tomerr90 avatar kobybs avatar oran1248 avatar viviansh avatar geniashand avatar sapirbismot avatar kfir-marx avatar nikitadizhur avatar aviadco avatar slashertech avatar

Watchers

James Cloos avatar Steve Davis 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.