Plugins

Plugins are executed via the command line by serverSHARK and write data to the mongodb. Each plugin should be available as a tar.gz that serverSHARK can install.

Plugin structure

Basic plugin structure (after decompressing the tar) should be:

  • install.sh
  • execute.sh
  • schema.json
  • info.json
  • the plugin itself

ServerSHARK executes the install.sh to install the plugin and execute.sh for normal plugin execution. The schema.json should contain collections and fields the plugin introduces into the mongodb. The info.json should contain general information about the plugin and also the parameters that are required for plugin execution.

Create plugins

The creation of a plugin is not complicated. It should adhere to the structure described above. For python plugins there are numerous examples to look at, e.g., coastSHARK, issueSHARK. Additionally, we have one Java plugin, the refSHARK.

Currently available plugins for data collection or analysis

Plugins that scrape data from repositories:

  • vcsSHARK: This plugin extracts data from version control systems, e.g., git.
  • issueSHARK: Collects data from issue tracking systems, e.g., Jira, Bugzilla, and GitHub issues.
  • mailingSHARK: Collects data from mailing lists.
  • travisSHARK: Collects data from Travis CI.

Plugins that analyze source code:

  • mecoSHARK: Collects software metrics for Java, Phython, C, and C++ projects using sourcemeter.
  • coastSHARK: This plugin parses python (via pythons builtin ast) and java (via javalang) and extracts a bag-of-words vector of the AST node types. The CoastSHARK also extracts every import from every file.
  • refSHARK: Analyzes Java source code to determine refactorings.
  • changeSHARK: Analyzes changes to Java files in commits and classifies them according to their change type.

Plugins that enhance existing data with heursitics:

  • linkSHARK: Determines links between commits and issues.
  • labelSHARK: Assigns labels (e.g., bugfix, refactoring, documentation) to commits based on the commit message, issue tracking data, and source code changes.
  • inducingSHARK: Determines inducing changes for bug fixes.
  • identitySHARK: Identifies and merges different identities of the same person, e.g., in the issue tracking system and the version control system.

Other plugins and tools:

  • memeSHARK: Compresses stored code entity states without losing information by removing states that did not change in commits.
  • mynbou: Creates defect prediction data sets a release of a software version.