Mohsen Vakilian

Cascade: a universal programmer-asssisted type qualifier inference tool

Type qualifiers augment an existing type system to check more properties. A cost of using type qualifiers is inserting them to source code. Cascade is a universal type qualifier inference tool. That is, it takes an existing type qualifier checker and turns it into an interactive type qualifier inference tool. While Cascade has been developed as an Eclipse plug-in, it is easy to build and port to other programming environments.

Cascade webpage

CompositionalRefactoring: usable automation for complex refactorings

CompositionalRefactoring is an Eclipse plugin that automates a set of primitive refactorings. Programmers can compose the primitive refactorings to apply more complex refactorings.

CompositionalRefactoring webpage

CodingSpectator: automatic collection of detailed refactoring usage data

CodingSpectator is an Eclipse plug-in for recording detailed refactoring usage data. In addition, CodingSpectator provides a framework to automatically submit the collected data to a central repository.

CodingSpectator webpage

CodingTracker: recording and replaying fine-grained code changes

CodingTracker is an Eclipse plug-in that can record and replay fine-grained code changes, e.g., insertion or deletion of a character. In addition, it can infer higher-level changes, such as refactorings, from the recorded sequence of changes.

CodingTracker webpage

Keshmesh: static detection of Java concurrency bug patterns

Keshmesh is an advanced static analysis tool for finding Java concurrency bug patterns. Keshmesh combines the power of WALA with the popularity of FindBugs. Keshmesh can find complex concurrency bug patterns through its inter-procedural points-to analyses.

Keshmesh webpage

DPJizer: a refactoring tool for inferring method effect summaries

DPJizer is an Eclipse plugin that automatically summarizes the effects of methods as required by Deterministic Parallel Java (DPJ). DPJ is a Java-based programming language for safe parallel programming. Through its compile-time checking, DPJ provides deterministic-by-default semantics in the presence of parallelism.

DPJizer webpage