Condor is a tool for detecting dependencies and interferences between conditional program transformations. The analysis performed by Condor is
Condor is an acronym for Conflict Detector, where “conflict” is used as a synonym for “interference”.
Conditional program transformations are at the heart of refactorings, aspect weaving , model driven architecture and many other application areas. In all these domains, joint application of different transformations may give rise to interferences, that is undesired effects of applying the transformations.
A conditional transformation (CT) is a sequence of program transformations guarded by a precondition. The transformation sequence is executed on a given program only if the guarding precondition is true for that program.
The precondition can express various constraints. For instance, it may select the places in a program to which the transformations should be applied, it may check conditions required for the correct execution of the transformations, or it may do both.
The preconditon may contain atomic conditions or complex ones created by conjunction, disjunction and negation of subconditions. Atomic conditions refer to the typical structure of a Java program (existence of classes, interfaces, fields, methods, parameters, annotations, exceptions, etc.). Transformations can change such structures (add / delete / rename class, method, field, parameter, …).
The notion of conditional transformations is central to many of the tools developed in our group: