<commit_before># fraglight

<img src="images/logo.png" width="10%" alt="logo" title="Logo" align="right" /> A tool for early detection of broken pointcuts in evolving Aspect-Oriented software.

## Introduction

Pointcut fragility is a well-documented problem in Aspect-Oriented Programming; changes to the base-code can lead to join points incorrectly falling in or out of the scope of pointcuts. Deciding which pointcuts have broken because of changes made to the base-code is a daunting venture, especially in large and complex systems.

![Change prediction screenshot](images/change_prediction_screenshot.png "Change prediction screenshot")

*fraglight*, an extension of the Mylyn Eclipse plug-in, which maintains focused contexts of entities relevant to a task, is a research prototype that recommends a set of AspectJ pointcuts that are likely to require modification due to a particular base-code change. The underlying approach is based on harnessing unique and arbitrarily deep structural commonality between program elements corresponding to join points selected by a pointcut in a particular software version. Patterns describing such commonality are used to recommend pointcuts that have potentially broken with a degree of change confidence as the developer is typing. More information can be found at the [project website](http://openlab.citytech.cuny.edu/pcp). The plug-in can be installed using the update site listed below.

## Update Site

https://raw.githubusercontent.com/khatchad/fraglight/master/edu.ohio_state.cse.khatchad.fraglight.updatesite/

## Usage

*fraglight* starts working when a Mylyn task is activated for an AspectJ project. There is a preference pane that can control some of the plug-in's behaviors:

![Preferences](images/preferences.png "Preferences")<commit_msg>Change URL.<commit_after># fraglight

<img src="https://raw.githubusercontent.com/ponder-lab/fraglight/master/images/logo.png" width="10%" alt="logo" title="Logo" align="right" /> A tool for early detection of broken pointcuts in evolving Aspect-Oriented software.

## Introduction

Pointcut fragility is a well-documented problem in Aspect-Oriented Programming; changes to the base-code can lead to join points incorrectly falling in or out of the scope of pointcuts. Deciding which pointcuts have broken because of changes made to the base-code is a daunting venture, especially in large and complex systems.

![Change prediction screenshot](images/change_prediction_screenshot.png "Change prediction screenshot")

*fraglight*, an extension of the Mylyn Eclipse plug-in, which maintains focused contexts of entities relevant to a task, is a research prototype that recommends a set of AspectJ pointcuts that are likely to require modification due to a particular base-code change. The underlying approach is based on harnessing unique and arbitrarily deep structural commonality between program elements corresponding to join points selected by a pointcut in a particular software version. Patterns describing such commonality are used to recommend pointcuts that have potentially broken with a degree of change confidence as the developer is typing. More information can be found at the [project website](http://openlab.citytech.cuny.edu/pcp). The plug-in can be installed using the update site listed below.

## Update Site

https://raw.githubusercontent.com/khatchad/fraglight/master/edu.ohio_state.cse.khatchad.fraglight.updatesite/

## Usage

*fraglight* starts working when a Mylyn task is activated for an AspectJ project. There is a preference pane that can control some of the plug-in's behaviors:

![Preferences](images/preferences.png "Preferences")
{'fraction_non_alphanumeric': 0.0597707423580786, 'fraction_numerical': 0.001091703056768559, 'mean_word_length': 5.385017421602788, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 3, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1705277', 'n_tokens_mistral': 916, 'n_tokens_neox': 873, 'n_words': 446}