io.codemodder.Codemod Maven / Gradle / Ivy
package io.codemodder;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/** Used to mark types providing codemod functionality and provide the necessary metadata. */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Codemod {
/**
* The codemod ID, which must follow this nomenclature:
*
* [vendor]:[language]/[unique identifier]
*
*
Some examples:
*
*
* - pixee:java/secure-random
*
- codeql:java/xss
*
*/
String id();
/**
* The review guidance for the changes introduced by this codemod
*
* @return review guidance
*/
ReviewGuidance reviewGuidance();
/** How important it is that this codemod execute sooner in the list of codemods being run. */
CodemodExecutionPriority executionPriority() default CodemodExecutionPriority.NORMAL;
/**
* How important this codemod's changes are. Maybe a stand-in for a severity value that we may
* want to replace this with someday. May be unused locally, but is needed for documentation.
*/
@SuppressWarnings("unused")
Importance importance();
}