Thanks to visit codestin.com
Credit goes to Github.com

Skip to content
/ HAnS Public

HAnS - Helping Annotate Software. HAnS is an open-source (Apache 2.0) plugin for IntelliJ that helps you annotate software.

License

Notifications You must be signed in to change notification settings

isselab/HAnS

Repository files navigation

HAnS (Helping Annotate Software)

Build codecov Version Downloads License Static Badge

HAnS is a JetBrains IDE plugin that supports feature-oriented software development by enabling developers to annotate, track, and analyze features throughout their codebase. The plugin provides comprehensive tooling for feature location, mapping, and metrics collection in software systems.

Key Features

Feature Modeling & Annotation

  • Feature Model Language - Define hierarchical feature models using the .feature-model format
  • Code Annotation - Annotate code fragments with feature markers using lightweight comments (&begin[Feature], &end[Feature], &line[Feature])
  • File & Folder Mapping - Map entire files or directories to features using .feature-to-file and .feature-to-folder mappings
  • Live Templates - Quick insertion of feature annotations with predefined templates
  • Intelligent Completion - Context-aware code completion for feature names and annotation syntax

IDE Integration

  • Feature Model View - Visual tool window displaying the hierarchical feature structure
  • Feature Metrics View - Bottom panel showing calculated metrics including:
    • Line Count per feature
    • Feature-to-File mappings
    • Feature Scattering degree
    • Feature Tangling degree
  • Traffic Light Indicator - Visual indicator showing file/folder feature mapping status
  • Syntax Highlighting - Custom syntax highlighting for all feature annotation languages with configurable color schemes (Darcula and Default themes)

Refactoring & Navigation

  • Smart Referencing - Navigate between feature definitions and their usages
  • Feature Renaming - Rename features across the entire project with automatic reference updates
  • Find Usages - Locate all occurrences of a feature throughout the codebase
  • Quick Fixes - Automated fixes for unassigned features and annotation errors

Extensibility

  • Extension Points - Plugin architecture with callbacks for metrics and feature tracking
  • Service Layer - Metrics service and highlighter service for plugin extensions
  • Background Tasks - Asynchronous processing for metrics calculation and feature analysis

Getting Started

Installation

From JetBrains Marketplace (Recommended):

Settings/Preferences > Plugins > Marketplace > Search for "HAnS" > Install

Manual Installation:

Download the latest release and install using: Settings/Preferences > Plugins > ⚙️ > Install plugin from disk...

Compatibility

  • Supported IDEs: All JetBrains IDEs (IntelliJ IDEA, Rider, PyCharm, WebStorm, etc.)
  • Minimum Build: 2025.1 (251)
  • Java Version: 21+

Quick Start

  1. Create a .feature-model file in your project root to define your feature hierarchy
  2. Use live templates or quick actions to annotate code with features
  3. View your feature structure in the Feature Model View tool window
  4. Access feature metrics in the Feature Metrics View panel
  5. Track file/folder mappings with the traffic light indicator

Contributing

We welcome contributions from the community! HAnS itself is annotated with features, serving as a practical example of the plugin's capabilities.

How to Contribute

  1. Fork the repository
  2. Annotate your contribution - Add feature annotations to your code following the existing patterns
  3. Build and test - Run the runIde Gradle task to test your changes, write unit tests when appropriate
  4. Submit a pull request

Pull Request Guidelines

Name your PR using this format: [Folder]-[FeatureName]-[Contributor]-[Description]

  • Folder: Either Feature or Bug
  • FeatureName: Use an existing feature from the feature model or propose a new one
  • Contributor: Your GitHub username
  • Description: Brief description of the change

Code Review Team

All contributions are reviewed by our core team to ensure code quality and maintainability. Interested in joining the review team? Contact any current reviewer.

Current Reviewers

jhc github jhc github jhc github

Research & Publications

HAnS is developed and maintained by academic research groups focused on software engineering and feature-oriented development.

Research Group

ISSELab ISSELab Website

Chair of Software Engineering

Publications

2025

  • Lightweight Visualization of Software Features with HAnS-viz by Johan Martinson, Kevin Hermann, Riman Houbbi, David Stechow, Thorsten Berger

    DOI

2024

  • An IDE Plugin for Clone Management by Ahmad Al Shihabi, Jan Sollmann, Johan Martinson, Wardah Mahmood, Thorsten Berger

    DOI

2021

  • Master Thesis by Johan Martinson & Herman Jansson

    DOI

  • HAnS: IDE-based editing support for embedded feature annotations by Johan Martinson, Herman Jansson, Mukelabai Mukelabai, Thorsten Berger, Alexandre Bergel, and Truong Ho-Quang

    DOI

Annotated Datasets

Example projects using HAnS for feature annotation:

Contact & Support

Maintainers

johmara

Community

Join our Discord community for discussions, support, and updates.

Contributors

See our CONTRIBUTORS.md for a full list of project contributors.

License

Licensed under the Apache License, Version 2.0. See LICENSE for details.

About

HAnS - Helping Annotate Software. HAnS is an open-source (Apache 2.0) plugin for IntelliJ that helps you annotate software.

Topics

Resources

License

Stars

Watchers

Forks

Contributors 16