Quantcast
Channel: Eclipse Plugins, Bundles and Products - Eclipse Marketplace | Eclipse Foundation - Explore, share, and collaborate on Eclipse Plugins, Tools, and Extensions. Discover new and popular additions to enhance your Eclipse development experience.
Viewing all 15920 articles
Browse latest View live

EMF Client Platform

$
0
0
Date Updated: 
Mon, 2019-09-30 05:22
EclipseSource
Date Created: 
Fri, 2012-04-27 13:25

The EMF Client Platform is a framework for building EMF-based client applications. The goal is to provide a one-click application based on a given EMF model. No additional components have to be developed or generated beyond the EMF model, therefore, ECP provides a standard solution offering the most common features needed for EMF-based client applications. In particular, these features are: A navigator showing the hierarchy of a model instance that allows browsing of models, DnD and creation of new instances. An editor that shows all attributes and references of a particular model element and allows modifications to the element. A couple of modal dialogs, e.g., those allowing the selection of and search for model elements. A transparent workspace interface that allows different persistency layers (e.g., EMFStore or CDO) The UI provided by the EMF Client Platform can then be customized step by step. This can be done by extending ECP or by replacing single components completely.


Eclipse Advanced Scripting Environment (EASE)

$
0
0
Date Updated: 
Mon, 2019-09-30 11:15
Eclipse.org
Date Created: 
Mon, 2018-11-05 10:15

EASE is a scripting environment for Eclipse.

It allows to create, maintain and execute script code in the context of the running Eclipse instance. Therefore such scripts may manipulate and extend the IDE itself. Loadable script modules allow to simplify usage of native Java objects and can be extended with application specific methods.

Scripts may not only automate UI tasks, they can also be integrated into toolbars and menus dynamically. This allows to customize the IDE with pure script code.

Various script engines are available, like Rhino (JavaScript), Jython/Py4J (Python) or Groovy. The extensible framework allows to add any kind of language, you could even embed your own command shell.

Bndtools

$
0
0
Date Updated: 
Mon, 2019-09-30 16:01
Neil Bartlett and others
Date Created: 
Tue, 2010-05-18 23:11
Bndtools: the Development Environment for OSGi Bundles and Applications

What is Bndtools?

Bndtools is an Eclipse based development environment that significantly simplifies the development of OSGi Bundles and application. It provides all the features one can expect from a popular IDE. On top these formidable shoulders it adds thousands of functions to simplify the development of OSGi and help create more resilient bundles. For this, it is based on bnd, a library that is used in the majority of OSGi builds to make the bundles more robust. Since bnd is used by the OSGi Alliance to build some of the reference implementations and all test suites, it is guaranteed to support every latest OSGi feature and beyond.

Coding in Bndtools

Coding in Bndtools is highly interactive. Often you code bundles in a life environment. Any changes you make in the workspace are immediately build into bundles and then deployed to active framework that is either on your local machine or remotely. Sometimes you will forget that you have not restarted the framework for days or that you test code unnecessarily on a remote machine.

Related projects are grouped in a workspace. This simplifies the development of cohesive components by sharing information without forcing that information to become public. I.e. a workspace is a module that consists of bundles. In Bndtools you don’t write a Manifest file, you write a bnd file. This is a property file that supports all kinds of conveniences over the Manifest writing like they do in PDE. You can use wildcards when applicable and a powerful macro language makes it very easy to only define facts in one place to avoid redundant information. It is also possible to create manifest headers through annotations. For all important headers there are very useful defaults like for example the Bundle Symbolic Name (which is the project name). For most bundle projects, the actual information in the bnd file is quite small and does not change often.

The state of the art of OSGi is to use declarative services with their standardized annotations. Bndtools has wizards for DS components and reports and misuse of the annotations at the place where they happen. Since Bndtools always builds after any change, the feedback is direct.

There are several editors provided with Bndtools. The bnd editor provides completion of instructions and tooltips on headers and instructions. It is directly integrated with the error reporting. The JAR editor shows the contents of a JAR and can print an overview of the OSGi relevant details of a JAR.

Bndtools has a flexible model for Workspace templates and Project templates. Workspace templates can come from a remote repository, for example from your organization. A wizard allows a workspace template to update an existing workspace or create a new workspace. The project templates can come from repositories and use a powerful templating language (Moustache). This makes it easy to add organization specific project templates.

Versioning Bndtools

In a component system versioning is unavoidable, systems that do not version their packages will be very hard to evolve over time. Bndtools supports semantic package versions using the OSGi annotations for package versions and consumer/producer types in the package folder. By placing all the information in the package folder, close to where the changes happen, makes it easy to maintain proper versions. When the manifest is calculated by bnd all this information is taken into account, verified, and then used to generate the OSGi headers using OSGi’s definition of _semantic versioning_. With Bndtools, package versions are natural, hardly require work, and mistakes are caught before they percolate through the system. If you violate the rules of semantic versioning, for example you add a method to an interface without bumping the version, then Bndtools can tell you that you just broke backward compatibility. If you work with other people then you have to be careful when you change API! Even experienced users tend to forget in their rush to pay attention to this backward compatibility. Fortunately, Bndtools can continuously check your new bundle against the previously released version. If bnd detects any incompatible changes (without the appropriate version change) then it will balk and point out where to fix it: either the version or the line that caused the incompatibility. This alone could be a reason to switch to Bndtools.

Build Support in Bndtools

Bndtools is the user interface on top of bnd, where bnd is the headless build library that provides a build model. This library is used in Gradle, Maven, Ant, SBT, and other build tools. Over time it has been expanded with lots of functions to make builds easier.

First, bnd is a pull model. Instead of taking the contents of a project bnd makes you define what packages are part of the bundle. These packages can come from your project but also from other projects or other JARs. This provides a lot of leeway in designing the packaging of a bundle. You can also specify what resources should be included and at what path. Overall the bnd file has much more flexibility than most other build environments to package a bundle.

The bnd files can use a very powerful macro language. The macros can be used to define facts in one place and use it in different places. However, built in macros provide access to the current operation like the actual exported packages, the imports, the time. You can also access the file system or OS commands. For example, the macros can be used to add a number of JAR files in a local directory to the Bundle-ClassPath.

Dependencies in bnd come from repositories. In Bndtools the repositories can be viewed and edited. Currently, bnd supports repositories for OSGi XML files with Capabilities & Requirements, Maven, simple file repositories, and others. It is quite easy to add additional repositories to bnd.

Bndtools provides extensive support to collaborate with maven projects. Bundles can be created with a POM file inside in the same way Maven does. The contents of this POM is derived from the manifest headers. With the Maven Bnd Repository that is included there is full maven repository support. It integrates with Nexus, Artifactory, and the local machine based repository. It supports snapshots and releases. Bndtools dependencies can come from Maven repositories and can be released to them as well. Try it out, in contrast to m2e Bndtools is much more interactive.

Assembly with Bndtools

OSGi is a reusable component system. One stage in the development of an application is therefore to assemble a set of components and configure them. Bndtools supports assembly with a resolver that can create the list of bundles needed to satisfy a set of initial requirements. Instead of discovering more and more dependencies by dragging in a new dependency, in Bndtools you can just drag the XRay bundle to the initial requirements list and then the resolver will include Web Console, an Http Server, DS, and all other required bundles. This tool can be an enormous time saver because it can be really hard to create a consistent set of bundles that actually works when deployed.

Debugging in Bndtools

In Bndtools when you debug or launch an application your code sees an environment that is identical to the runtime of the application when it runs standalone, unlike PDE. This avoids the Heisenbugs that only occur in runtime. It also has the effect that your code becomes much more robust because any errors in handling the OSGi dynamics will be found quickly because you can develop so interactively. Bndtools uses the hot deployment mechanisms of OSGi to deploy updated bundles from the workspace in the framework seamlessly. Bndtools has almost the feeling of a dynamic language with REPL (Read, Eval, Print, Loop). For people used to PDE or even normal Java development this is jaw-dropping. Try it, developing bundles is fun with Bndtools. Debugging applications can happen locally on your machine but it can also happen on a remote, potentially much smaller like a Raspberry Pi, machine. Both local and remote are completely interactive.

Verification in Bndtools

Every Bundle made with bnd is verified as much as possible. Many errors are directly reported in the source code at the proper place. The bnd library is continuously expanded to diagnose problems and warn about them.

Testing with Bndtools

Bndtools supports proper JUnit testing with the standard Eclipse GUI. However, bnd also supports testing in a life OSGi framework. This bnd test framework is fully integrated with the Eclipse JUnit GUI; it is hard to see the difference.

Continuous Integration with Bndtools

Any Bndtools workspace can also be built with Gradle because bnd also provides an excellent Gradle plugin that guarantees the same output that Eclipse generates from the same bnd files. This Gradle plugin can also be used standalone for classic Gradle projects.

Getting started with Bndtools via OSGi enRoute

The OSGi Alliance has invested in making it easier to get started with OSGi. Work done in extending Bndtools/bnd is one part of this effort. You can find documentation, tutorials, examples, application notes and a forum on the OSGi enRoute site.

Contributing to Bndtools

Bndtools and bnd are fully build with Bndtools. You can find the Git repositories on Github. Any feedback can be reported there and we welcome PRs.

ABAP Quick Fix

$
0
0
Date Updated: 
Tue, 2019-10-01 02:49
ABAPBlog.com
Date Created: 
Wed, 2019-06-05 07:56

Quick Fixes addon for ABAP.

For now possible functions are: 

  1. Remove all ABAP Comments
  2. Remove all ABAP Comments in Selection
  3. Replace icon literals with constants
  4. Translate comment into English (source language determined automatically)

Bash Editor

$
0
0
Date Updated: 
Tue, 2019-10-01 05:45
Albert Tregnaghi
Date Created: 
Mon, 2017-07-10 06:27

This plugin is a bash script editor.

Features:

  • Integrated bash debugger
  • Syntax highlighting
  • Outline
  • Quick-Outline (CTRL + o )
  • Open referenced functions by hyperlink (script, project or even workspace scope possible)
  • Validation
  • Simple code completion (keywords + existing words)
  • Colors can be customized. Also additional defaults for dark theme exists.
  • Bracket switching + highlighting
  • Block commenting (CTRL+7)
  • Auto bracket closing for []
  • Small (<560 kb)
  • Tooltips for keywords (offline description + link to online information)
  • Works on Linux, Windows and Mac out of the box.
  • Save Actions
    • External Tool can be used for auto format on save, default is set to beautysh

Additional links

Jaspersoft Studio

$
0
0
Date Updated: 
Tue, 2019-10-01 06:18
TIBCO Jaspersoft
Date Created: 
Mon, 2010-08-30 09:34

TIBCO Jaspersoft® Studio is editing software for TIBCO JasperReports®. It will help you design and run report templates; build report queries; write complex expressions; layout visual components like 50+ types of charts, maps, tables, crosstabs, and custom visualisations; and much more. It integrates TIBCO JasperReports® Server to create powerful report publishing workflows. With Jaspersoft Studio you can build documents of any complexity from your data—from print-ready in PDFs to interactive masterpieces in dynamic HTML, with navigation to interactive components, like maps and charts that may be inside or outside the report. You can generate high quality OpenOffice, PowerPoint , RTF, Word, and spreadsheet documents. Or you can generate raw CSV, JSON, or XML documents. It's not difficult to build your own custom exporter to suit any data need. Using Jaspersoft Studio, you can access different types of data sources, including big data, CSV, Hibernate, Jaspersoft Domain, JavaBeans, JDBC, JSON, NoSQL, TIBCO Spotfire® Information Links, XML, or your own custom data source. Available as an Eclipse plug-in or a standalone application, Jaspersoft Studio comes in two editions: Community and Professional. The Professional edition includes additional features, like access to Spotfire, maps, and advanced HTML5 charts, as well as professional support. Jaspersoft Studio The standalone version can be downloaded here: http://community.jaspersoft.com/project/jaspersoft-studio/releases The update sites archive can be found here: http://sourceforge.net/projects/jasperstudio/files/updatesite/ If you are noticing installation issues with Jaspersoft Studio plug-in or the RCP update mechanism please give a look at the following troubleshooting article that explains how to deal with the problems caused by the Sourceforge latest changes: Solving installation and update errors related to the update site of Jaspersoft Studio

pgCodeKeeper

Teamscale Integration for Eclipse

$
0
0
Date Updated: 
Tue, 2019-10-01 12:56
CQSE GmbH
Date Created: 
Thu, 2015-02-12 10:16

The Teamscale Integration for Eclipse allows for seamless browsing of quality defects found by the Teamscale software‐quality analysis server. Teamscale analyzes your source code incrementally with every commit, providing feedback on the quality of your code in near real‐time. (Note: An existing Teamscale Server is necessary to use this plugin!)

This plugin has the following features:

  • Auto‐detect which branch is being used (Git & Subclipse/Subversive) and display all data accordingly
  • Display defects in the Findings view
  • Allow comparison of clones using the clone compare editor
  • Display findings next to your code
  • Blacklist findings
  • Use baselines to only display defects that are new
  • Show test coverage from Teamscale server

Just follow the installation guide and start using the Teamscale Integration in your Eclipse IDE.

See the changelog to find out what’s new.


OpenLegacy

$
0
0
Date Updated: 
Wed, 2019-10-02 04:57
OpenLegacy Inc.
Date Created: 
Sun, 2012-09-30 17:44

OpenLegacy is the next-generation Legacy modernization rapid application development platform for Java developers. OpenLegacy helps you fully modernize Legacy applications to create a Java, REST API, mobile, web and web services in minutes.

PyDev - Python IDE for Eclipse

$
0
0
Date Updated: 
Wed, 2019-10-02 10:12
Brainwy Software
Date Created: 
Wed, 2004-07-07 08:06

PyDev is a plugin that enables Eclipse to be used as a Python IDE (supporting also Jython and IronPython). It uses advanced type inference techniques which allow it to provide things such as code completion and code analysis, besides providing a debugger, interactive console, refactoring, tokens browser, django integration, etc.

Homepage:
    pydev.org

Getting Started:
    Getting Started (read to make sure you can get most out of PyDev)

Feature Matrix:
    pydev.org/manual_adv_features.html

General questions:
    StackOverflow (with the PyDev tag)

Report issues/features:
    Brainwy Tracker

Code questions:
    pydev-code list

Source Code:
    github.com/fabioz/Pydev

Blog:
    pydev.blogspot.com

Below are some of its highlighted features.

  • Python, Jython and IronPython support
  • Django integration
  • Django templates editor (requires LiClipse)
  • Code completion
  • Debugger
  • Unittest integration
  • Interactive Console
  • Code analysis
  • Go to definition (F3)
  • Find References (Ctrl+Shift+G)
  • Refactoring
  • Google App Engine integration
  • Syntax highlighting
  • Parser errors
  • Outline view
  • Tabs or spaces preferences
  • Smart indent / dedent
  • Comment / uncomment / comment blocks
  • Code folding
  • TODO tasks
  • Content Assistants (Ctrl+1)
  • Scripting with Jython
  • Mark Occurrences
             

Codewind

$
0
0
Date Updated: 
Thu, 2019-10-03 09:10
IBM
Date Created: 
Thu, 2019-05-16 13:09

The goal of Eclipse Codewind is to provide tools to help building high-quality cloud-native applications, regardless of which IDE or language you use. The first step is the capability to rapidly create an application from a template project, support for launching, updating, testing, and debugging in Docker containers on the desktop.

Features

  • Create new containerized projects or add existing ones
  • View your containerized projects including the application and build status
  • Debug Microprofile/Java EE and Spring applications
  • Set up a debug session in a Chromium-based browser for Node.js applications
  • View application and build logs in the Console view
  • Integrate validation errors into the Markers view
  • Open a shell session into an application container
  • Toggle the project auto build setting and manually initiate project builds
  • Open your application or the application monitor in a browser

For more info, see https://www.eclipse.org/codewind/

Codewind OpenAPI Tools

$
0
0
Date Updated: 
Thu, 2019-10-03 09:11
IBM
Date Created: 
Fri, 2019-06-28 15:29

The Codewind OpenAPI Tools for Eclipse provides wizards that invoke the OpenAPI Generator to create API clients, server stubs, and HTML documentation from OpenAPI Specifications. The tools are integrated with and are customized to work with Codewind for Eclipse but they also work standalone with a base Eclipse IDE for Java EE Developers installation.

Bonita

$
0
0
Date Updated: 
Thu, 2019-10-03 12:04
Bonitasoft
Date Created: 
Thu, 2009-12-17 10:35

The Bonita platform is designed for multidisciplinary development teams to create and continuously improve enterprise-grade living applications.

It's a low-code digital business automation platform that enables technical teams to create and continuously improve business applications that offer superior digital user experiences, by connecting customized user interfaces with reliable back-office operations. The low-code Bonita platform provides development frameworks, tools, extensibility and freedom - it's easy to try new ideas, deliver business applications quickly, and improve continuously. Business users get applications that integrate their unique combination of customer and employee user experience needs, information systems, automation, and business operations.

Bonita Studio is the part of the Bonita platform that is an Eclipse-based graphical interface to drag-and-drop design the business logic in the form of a process model. It also provides a rich mix of graphical tools, tooling, frameworks, and allows custom coding to apply where appropriate, to integrate the process with other platforms and applications and to create customized web-based interfaces. It also comes with GIT and continuous integration tools.

The entire Bonita platform is open and fully extensible, with a full set of connectors for many commonly used commercial and open-source databases, messaging systems, ERPs, CRMs, ECMs and more (AD, Alfresco, Google calendar, email, LDAP, SAP, and Talend, to name a few). It also comes with connector building tools for creating custom API connectors, and its many extension points permit maximum customization everywhere in the applications you build.

The Bonita platform also comes with a UI Designer to build personalized user interfaces for any application, to provide the best possible digital user experience for customers and employees.

The Bonita Engine is a powerful and scalable Java workflow engine. It is flexible enough to adapt easily to any Information Systems architecture, and can support intensive workload. It can easily be embedded in your own application.

The Bonita Portal gives give authorized users the means to monitor and administrate applications and processes running on the Bonita platform.

EGit - Git Integration for Eclipse

$
0
0
Date Updated: 
Thu, 2019-10-03 17:15
Eclipse.org
Date Created: 
Fri, 2010-06-18 16:30

EGit is the Git integration for Eclipse. Git is a distributed versioning system, which means every developer has a full copy of all history of every revision of the code, making queries against the history very fast and versatile. The EGit project is implementing Eclipse tooling on top of the JGit Java implementation of Git. To get started, check out our user guide: http://wiki.eclipse.org/EGit/User_Guide If you have any questions, please use our support forum: http://www.eclipse.org/forums/index.php?t=thread&frm_id=48

Protector4J


eclox

$
0
0
Date Updated: 
Fri, 2019-10-04 10:44
anb0s
Date Created: 
Fri, 2014-03-07 03:42

Eclox is a simple doxygen frontend plug-in for eclipse.

It aims to provide a slim and sleek integration of the code documentation process into eclipse by providing a high-level graphical user interface over doxygen.

Features:
- graphical edition of doxyfile settings
- integrated doxygen invocation
- doxygen outputs logging and
- optional packaged doxygen binaries (for windows and linux)

Eclox is a free software distributed under the term of the:
- Eclipse Public Licence v2.0 for version 0.13.x and newer
- Eclipse Public Licence v1.0 for version 0.10.x - 0.12.x
- GNU General Public Licence (GPL) for version 0.8.x and older

Project page and update site: http://anb0s.github.io/eclox

eclox-0.12.1: Bug fixes for the second minor release @github
Fixed issues (https://github.com/anb0s/eclox/milestone/6?closed=1):
- [x] #220: Cannot get eclox doxygen to run in the code composer studio
eclipse package
- [x] #222: bundled doxygen cannot be used
- [x] #223: create bundled doxygen with all needed files

eclox-0.12.0: Second minor release @github
Fixed issues (https://github.com/anb0s/eclox/milestone/3?closed=1):
- [x] #18 Support doxygen upgrade feature
- [x] #83 context menu entry shown unnecessarily
- [x] #91 Implement saveas feature
- [x] #108 improve detection of warnings concerning undocumented
parameters
- [x] #195 java.lang.IllegalArgumentException in
createMarkersForResource
- [x] #196 terminate build is not working like expected
- [x] #197 doxygen history menu shows multiple entries for same file
- [x] #198 doxyfile selection dialog does not show nested elements
- [x] #199 add "clear history" to history menu
- [x] #200 invalid custom doxygen identifier found
- [x] #201 Doxygen Build Console: stderr and stdin are not synchronized
- [x] #203 remove from history if "eclox.core.doxygen.RunException:
Missing or bad doxyfile"
- [x] #206 [v0.12] console icons are not shown
- [x] #207 [v0.12] exception if new file created
- [x] #208 [v0.12] java.lang.NullPointerException in Advanced tab
- [x] #211 add support for the += operator
- [x] #212 add support for multiple lines (lists) concatenated by
backslash (\)
- [x] #214 add support for TAG and VALUE format #214
- [x] #215 add support for line separator

v0.11.2: Bug fixes for the first minor release @GitHub
Fixed issues (https://github.com/anb0s/eclox/milestone/5?closed=1):
- #191 exception after build if OUTPUT_DIRECTORY is an absolute path
- #192 add Eclipse 4.2 target platform
- #193 fix feature and plugin provider-name

v0.11.1: Bug fixes for the first release @GitHub!
Fixed issues (https://github.com/anb0s/eclox/milestone/4?closed=1):
- #175 java.lang.IllegalArgumentException: endRule without matching beginRule
- #186 NPE when trying to create new Doxyfile
- #187 obsolete settings are not marked
- #189 Doxygen binaries 1.8.13.v20170413-1543

v0.11.0: First official release at GitHub!
Main changes:
- migrate to GitHub #161
- support configurable working directory #87
- support relative or project-based path to doxygen.exe #75
- open a file that is not a resource in eclipse #15, #68
- support resources in linked folders #176 **Thanks to Corderbollie**
- scrollbar for input directories in graphical editor #167
- sorting column in advanced tab #171
- add update site with bundled Doxygen executables #182
- updated project structure and build process
- added composite site to support testing and release update streams Fixed execution of bundled linux x86_64 binary.

All fixed issues (https://github.com/anb0s/eclox/milestone/1?closed=1):
- #11 muliple Doxyfiles - editing
- #12 Import of existing configuration files
- #15 Add ability to use Doxyfile not in project scope
- #68 open a file that is not a resource in eclipse
- #75 relative or project-based path to doxygen.exe
- #86 environment variables needed for some doxyfiles
- #87 working directory not configurable
- #114 Improvement static declaration of plugin relative identifier
- #144 Tell more about the directory where eclox is stared
- #161 migrate to GitHub
- #162 prepare release 0.11.0
- #163 Unable to use GraphViz
- #164 Unable to create the selected preference page. eclox/core/ui/PreferencePage : Unsupported major.minor version 52.0
- #165 new GitHub update site shows only one version &quot;Eclox 0.10.2.201508272130&quot;
- #167 Scrollbar missing for Input Directories in Graphical Editor
- #170 Graphviz and PlantUML on Windows
- #171 Sorting column in Advanced tab
- #173 [v0.11] invalid custom doxygen identifier found
- #174 [v0.11] endRule without matching beginRule
- #175 java.lang.IllegalArgumentException: endRule without matching beginRule
- #178 No groups on advanced tab
- #176 Support resources in linked folders
- #182 [v0.11] add update site with bundled Doxygen executables
- #184 [v0.11] bundled Doxygen binaries are not working (not executable) at Linux Known issues:
- #166 freeze of build with Grep Console installed --&gt; **related to other plugin, please apply the described workaround**

Eclipse Docker Tooling

$
0
0
Date Updated: 
Fri, 2019-10-04 15:03
Eclipse.org
Date Created: 
Tue, 2016-02-02 16:42

The Eclipse Docker Tooling plugin provides the ability to manage Docker images and containers from within the Eclipse IDE.

Eclipse Vagrant Tooling

$
0
0
Date Updated: 
Fri, 2019-10-04 15:12
Eclipse.org
Date Created: 
Tue, 2016-02-02 16:55

The Eclipse Vagrant Tooling plugin allows users a simple way to manage Vagrant Boxes, and Virtual Machines as one might do with the 'vagrant' commandline tool.

Darkest Dark Theme with DevStyle

$
0
0
Date Updated: 
Fri, 2019-10-04 16:29
Genuitec, LLC
Date Created: 
Tue, 2017-01-31 12:51

Darkest Dark is now DevStyle - a free plugin providing an enhanced set of experiences for Eclipse. Included:

  • Darkest Dark theme - #1 in the Marketplace:
    True dark theme with flat replacement icons
    A great experience over Windows, Mac and Linux
     
  • Included with DevStyle:
    New light and dark color themes
    All new startup experience for Eclipse
    Inline search for text editors

Entirely free to use!  Get DevStyle today.

JDeodorant

$
0
0
Date Updated: 
Sat, 2019-10-05 08:34
Department of Computer Science & Software Engineering, Concordia University
Date Created: 
Wed, 2007-11-28 10:33

JDeodorant is an Eclipse plug-in that identifies design problems in software, known as bad smells, and resolves them by applying appropriate refactorings.

JDeodorant employs a variety of novel methods and techniques in order to identify code smells and suggest the appropriate refactorings that resolve them. For the moment, the tool identifies five kinds of bad smells, namely Feature Envy, Type Checking, Long Method, God Class and Duplicated Code.

Feature Envy problems are resolved by appropriate Move Method refactorings. Type Checking problems are resolved by appropriate Replace Conditional with Polymorphism and Replace Type code with State/Strategy refactorings. Long Method problems are resolved by appropriate Extract Method refactorings. God Class problems are resolved by appropriate Extract Class refactorings. Duplicated Code problems are resolved by appropriate Extract Clone refactorings.

The tool is the outcome of the research performed in the Software Refactoring Lab Department of Computer Science and Software Engineering, Concordia University, Canada and the Software Engineering Group at the Department of Applied Informatics, University of Macedonia, Thessaloniki, Greece.

JDeodorant encompasses a number of innovative features:

  • Transformation of expert knowledge to fully automated processes
  • Pre-Evaluation of the effect for each suggested solution
  • User guidance in comprehending the design problems
  • User friendliness (one-click approach in improving design quality)

JDeodorant YouTube Channel
Refactoring of the Clones - Teaser Trailer
Code Smell Visualization Demo

Latest features:

  • JDeodorant Release Information on GitHub
  • [11/11/2016] Bug fixes and improvements: - Extract Class Refactoring implementation tested with 1475 refactorings applied in JFreeChart-1.0.19 and 1149 refactorings applied in JFreeChart-1.0.10 - Move Method Refactoring implementation tested with 99 refactorings applied in JFreeChart-1.0.19 and 65 refactorings applied in JFreeChart-1.0.10 - Extract Class and Move Method candidate refactorings are no longer virtually applied. This makes the detection of refactoring opportunities much faster. - Redundant Extract Method refactoring opportunities are no longer reported by eliminating identical slices expanding in different blocks.
  • [12/09/2016] Bug fixes and improvements in the Move Method Refactoring implementation.
  • [29/08/2016] Bug fixes and improvements in the Clone Refactoring feature.
  • [14/06/2016] Proper creation of incoming control dependence for Try statements without resources.
  • [11/06/2016] Bug fixes and improvements: - Fixed the check for unprocessed methods in call graph analysis. - Fixed an infinite loop in call graph analysis. - TypeSearchRequestor excludes anonymous types from the results when searching for subclass types.
  • [09/06/2016] Bug fixes and improvements: - Improved the detection of method declarations with a type parameter from method invocations. - Fixed a common bug in Extract Class and Move Method refactorings related to Enums. - Refactored the common logic for finding topics to class TopicFinder. - Added a right-click pop-up menu to show the code smell visualization on user demand. - Added a check box for the filtering of clone groups based on the Java files currently opened in the editor.
  • [06/04/2016] Extended method call analysis to class instance creations and constructor invocations.
  • [22/02/2016] Fixed all the bugs reported for Type-Checking related refactorings in the paper by Francesca Arcelli Fontana, Marco Mangiacavalli, Domenico Pochiero, and Marco Zanoni titled On experimenting refactoring tools to remove code smells. Special thanks to Marco Mangiacavalli for the detailed report he prepared.
  • [11/02/2016] Fixed all the bugs reported for Extract Method Refactoring in the paper by Francesca Arcelli Fontana, Marco Mangiacavalli, Domenico Pochiero, and Marco Zanoni titled On experimenting refactoring tools to remove code smells. Special thanks to Marco Mangiacavalli for the detailed report he prepared.
  • [01/02/2016] Improved the performance of method call analyzer. If the type of the reference through which a polymorphic method is called can be statically determined, then only the overriding implementation of the subclass type corresponding to the reference type is analyzed.
  • [21/01/2016] - Improved the views for Feature Envy, God Class, Long Method, Type-Checking by allowing the user to apply refactoring opportunities on the currently examined project, even if the user has selected another project in between. The active project is always the last project on which a detection of code smells has been performed. - If the user has opened multiple code smell views, and each one of them contains refactoring opportunities for a different project, then a change to one of the projects will disable the "Apply Refactoring" button only for the code smell view corresponding to the changed project.
  • [15/01/2016] The Extract Method refactoring opportunities in which the statement declaring the variable criterion is nested in a deeper level compared to the level in which the extracted method invocation will be placed (i.e., the level in which the first statement of the slice is nested) are automatically excluded from being reported.
  • [08/01/2016] - The project is always being built before getting parsed. AST parsing takes place only if there are no compilation errors. - Files generated by Parser generators are automatically skipped from the analysis for refactoring opportunities. Currently, JavaCC, ANTLR, JFlex, and CUP generators are supported.
  • [29/12/2015] Fixed all the bugs reported for Extract Class Refactoring in the paper by Francesca Arcelli Fontana, Marco Mangiacavalli, Domenico Pochiero, and Marco Zanoni titled On experimenting refactoring tools to remove code smells. Special thanks to Marco Mangiacavalli for the detailed report he prepared.
  • [14/12/2015] Improved the handling of block nested within control statements in the generation of the Program Dependence Graph.
  • [12/12/2015] Improved the clone statement mapping process to prevent the mapping of statements being nested in the same level, but belonging to different basic blocks.
  • [06/12/2015] Methods belonging to test classes are no longer reported as refactoring opportunities for Feature Envy. Fixed a bug occurring when the user is switching between the Duplicated Code view containing imported clones belonging to project X and the Refactoring of duplicated methods selected in the Package Explorer belonging to project Y.
  • [23/11/2015] The repeated clone groups and class-level clones are no longer stored in memory.
  • [20/11/2015] The Duplicated Code view is updated after a refactoring or any other source code edit to highlight the eliminated, edited, and shifted clones. In this way the user does not have to import new clone detection results after the application of a clone refactoring.
  • [03/11/2015] The import of clone detection results has become faster by disabling the resolution of bindings when configuring the JDT ASTParser.
  • [27/10/2015] Fixed NullPointerException taking place when the default constructor is called, but no such constructor declaration exists in the actual source code.
  • [20/10/2015] Bug fix in the parser for CCFinder clone detection results file.
  • [17/10/2015] Added a Clone Import Wizard supporting the import of clones from 5 popular clone detection tools, namely CCFinder, ConQAT, Deckard, NiCad, and CloneDR. To use this feature go to Bad Smells -> Duplicated Code. This will open the "Duplicated Code" view for displaying the imported clone groups. Next, select a Java project from the Package Explorer, and click on the "Import Clones" button of the view.
  • [19/09/2015] Tons of bug fixes in Extract Clone Refactoring.
  • [20/08/2015] - Updated the detection of type-check elimination opportunities to support state variables having java.lang.String as type. - Fixed the case where the classes of the inheritance hierarchy belong to the same CompilationUnit with the code performing the Runtime Type Identification (bug reported by jasyn). - Tons of bug fixes in Extract Clone Refactoring.
  • [28/05/2015] The files containing the clones are opened in the editor before refactoring to avoid problems in the Undo history when applying successive Extract Clone refactorings.
  • [22/05/2015] Several bug fixes in Extract Clone Refactoring.
  • [07/05/2015] Fixed the refactoring of an if/else matched with a conditional expression (ternary operator).
  • [30/04/2015] - Excluded interfaces Serializable, Runnable, and Comparable from the list of accepted common super types. - Improved the matching of variable declaration statements with assignment statements.
  • [22/04/2015] Extended method commonSuperType() in class ASTNodeMatcher to find also the common superInterface of two types (if there is no common superclass).
  • [16/04/2015] Improved precondition for the parameterization of differences to ignore incoming dependencies from advanced matched nodes.
  • [26/03/2015] The first stable version of the Control Structure Variant Clone Visualization and Refactoring feature is released.
  • [24/12/2014] - Fixed Extract Class Refactoring to make the extracted class implement the Serializable interface, if the source class implements the Serializable interface and at least one extracted field is non-transient. - Fixed the extraction of thrown exceptions in PDG nodes. Class Instance Creations throwing exceptions are also taken into account in addition to method invocations. - Added support for checking whether a method with the same name already exists in a class when performing an Extract Method Refactoring. - Fixed a bug related to the handling of Synchronized blocks during the generation of the PDG.
  • [25/10/2014] - The updating of the model is no longer performed asynchronously. This bug caused model inconsistencies when detecting refactoring opportunities in the new code elements introduced by a previously applied refactoring. - Added vertical scrolling to the Slice Profile table. - Added support for collecting comments (i.e., line, block, and javadoc comments) - Fixed the refactoring of clones already containing parameters with argN names (where N is an integer starting from 0) - Fixed a bug in the Extract Method Refactoring mechanics
  • [21/09/2014] Updated the slice-profile view to display all local variables declared inside the body of the examined method. Added an option that enables only the variables with a scope covering the entire method body.
  • [10/09/2014] Fixed the refactoring of clones with additionally matched statements coming from the advanced matching of control predicate statements.
  • [06/09/2014] Added support for the advanced matching of a VariableDeclaration statement having an initializer with a VariableDeclaration statement not having an initializer + an Assignment statement initializing the declared variable. See screenshots for details.
  • [30/08/2014] Several fixes in Extract Clone Refactoring. - Updated the search scope for sub-types using SearchEngine.createStrictHierarchyScope() introduced in JDT 3.6 This update improved significantly the performance of the search for sub-types. - Added support for the advanced matching of different loop structures and if statements with expressions using the ternary operator. This feature was developed by Zackary Valenta as part of his NSERC USRA project.
  • [20/07/2014] The first stable version of the Software Clone Visualization and Refactoring feature is released.
  • [06/04/2014] - Added support for Synchronized and Labeled statements in Extract Clone refactoring. - Added support for pulling up additional duplicated methods called from the original clones in Extract Clone refactoring.
  • [29/03/2014] Fixed the matching of method invocations with method declarations having varargs parameters. - Added analysis support for Enum types. - Added analysis support for Labeled and Synchronized statements.
  • [22/02/2014] Clone Visualization bug fixes: a) fixed the matching of InfixExpressions, b) fixed a bug in the highlighting of differences for SimpleTypes.
  • [21/12/2013] Improved the matching of method invocations with method declarations to address the cases where 'type parameter names' are replaced with actual types in the method calls.
  • [14/12/2013] - Improved the user interface of Extract Clone Refactoring, so that it presents multiple refactoring opportunities from a pair of methods in the same Wizard page (using a combo for allowing the user to select among the different refactoring opportunities). - Added initial support for the mapping of if/else statements with expression statements containing a conditional expression (i.e., the ternary operator condition ? true : false).
  • [13/10/2013] - Fixed the handling of additional methods moved along with source method in Move Method Refactoring. - Fixed the processing of if statements within the body of do-while loops in the construction of control flow graphs.
  • [06/10/2013] New Clone Visualization and Refactoring (Beta) support. To use the new feature select two methods in the Package Explorer (holding the Ctrl key), right-click on one of the methods, and select "Refactor Duplicated Code..." - All inner types are parsed regardless of their nesting level. - Method calls with varargs are properly handled in method call analysis. - Program Dependence Graph generation has been enhanced with a caching mechanism for internal method calls.
  • [02/09/2013] New Code Smell Package Map Explorer for Feature Envy and God Class!! This new visualization allows to explore the detected code smells at system level and discover relationships and dependencies between code smells. The visualization was developed by Kimberly Dextras-Romagnino as part of her NSERC USRA project.
  • [02/07/2013] Code Smell Visualizations have been enhanced with auto scrollbar adjustment and zoom support (from the View menu options or by scrolling the mouse wheel).
  • [21/06/2013] The binding returned from SimpleName expressions should be checked for NullPointer. Many thanks to Wei Wu (École Polytechnique de Montréal) for reporting the problem.
  • [13/06/2013] New Code Smell Visualizations for Feature Envy and God Class!! Whenever you double-click on a refactoring suggestion a View will open displaying a visualization for the corresponding code smell instance. The visualizations were developed by Kimberly Dextras-Romagnino as part of her NSERC USRA project.
  • [28/02/2013] Fixed a bug in the construction of control flow graphs. Many thanks to Danny Verloop (TU Delft) for reporting the problem.
  • [06/11/2012] JDeodorant was updated to support Union Types introduced in Java 7. Union types are mainly used in the new Multicatch feature.
  • [04/11/2012] JDeodorant was updated to support the Java Language Specification 4 (Java 7). This affected the construction of Control Flow and Program Dependence graphs, since try statements may declare resources in JLS 4. More details can be found at the JDeodorant ChangeLog.
  • [26/10/2012] Alias analysis in the detection of Extract Method refactoring opportunities (Long method code smell) caused in some cases an infinite recursion. The new implementation of alias analysis improves significantly the performance. This is an important update.
  • [09/10/2012] The exclusion of classes containing method with @Test annotations from the analysis may cause NullPointer exceptions (such a case was found in JUnit). As a result, test methods are not excluded from the analysis.
  • [28/02/2012] Created a Standalone version of JDeodorant for the detection of refactoring opportunities from Eclipse applications. The results of Type Checking bad smell are now reported in a tree view and are grouped per inheritance hierarchy or named constants.
  • [16/11/2011] Added a new precondition for Move Method refactoring. The variable (parameter or field of target class type) through which the moved method will be invoked must not be assigned within the body of the candidate method to be moved.
  • [04/09/2011] Fixed the unnecessary importing of nested types in all implemented refactorings.
  • [22/04/2011] Several improvements in the identification process and presentation of Extract Class refactoring opportunities. The application of the Extract Class Refactoring has been improved to handle the extraction of static members and the proper initialization of final fields in the extracted class when they are initialized inside constructors. More details can be found at the JDeodorant ChangeLog.
  • [15/03/2011] Added a user option in the input pages of the Move Method and Extract Class refactorings allowing to keep delegates to the public moved methods.
  • [12/03/2011] Extract Class Refactoring has been implemented from scratch and several bugs have been fixed. Added user rating support for the identified Extract Class refactoring opportunities.
  • [09/01/2011] Try/catch blocks and throw statements are handled according to the approach proposed by Allen & Horwitz (2003). Added a rule for the preservation of output dependences. M. Allen, and S. Horwitz, "Slicing Java Programs that Throw and Catch Exceptions", ACM SIGPLAN Workshop on Partial Evaluation and semantics-based Program Manipulation, pp. 44-54, 2003.
  • [25/12/2010] The unlabeled break and continue statements within the body of loops and the break statements within the body of switch statements are handled according to the augmented program dependence graph (APDG) approach proposed by Ball & Horwitz (1993), Kumar & Horwitz (2002). T. Ball, and S. Horwitz, "Slicing Programs with Arbitrary Control Flow", First International Workshop on Automated and Algorithmic Debugging, pp. 206-222, 1993. S. Kumar, and S. Horwitz, "Better Slicing of Programs with Jumps and Switches", Fifth International Conference on Fundamental Approaches to Software Engineering, pp. 96-112, 2002.
  • [02/12/2010] Fixed a variety of problems related with the Type checking code smell.
  • [08/11/2010] Added functionality allowing the user to rate each identified refactoring opportunity with a rating ranging from 0 to 5 stars. The ratings provided by the users will help JDeodorant team to improve the ranking mechanism that sorts the identified refactoring opportunities.
  • [27/08/2010] Added support for code smell evolution analysis throughout successive versions of a given Java project. Just select an identified refactoring opportunity from the table view and click on "Evolution Analysis" button. JDeodorant will automatically analyze the evolution of the corresponding code smell in the relevant project versions loaded in the workspace. Eventually, JDeodorant will present a table showing the changes regarding the severity of the code smell among the successive project versions. Watch out the screencast showing the evolution analysis for a Feature Envy code smell.
  • [12/07/2010] Added an Update Site for JDeodorant.
  • [11/07/2010] The tool supports the identification of Extract Class refactoring opportunities for the decomposition of "God" classes. This feature is the outcome of a joint research effort with the SSRG Lab at the Department of Computing Science, University of Alberta.
  • [01/07/2010] The speed of slice computation when constructing unions of slices has been significantly improved.
  • [15/06/2010] A flexible calculator for slice-based cohesion metrics. Just right-click on a method from Package Explorer and click on "Slice-based Cohesion Metrics..." from the menu. The calculator will automatically compute the slices for all the variables which are declared within the body of the selected method and visually present its slice profile. The user can enable/disable any variable from the slice profile. The statements which are common to all enabled slices are highlighted in green color. The slice-based cohesion metrics (overlap, tightness, coverage) are dynamically re-calculated after each modification of the slice profile. See the screenshots for details.
Viewing all 15920 articles
Browse latest View live