diff --git a/framework/codemodder-base/src/main/java/io/codemodder/RemediationCodemod.java b/framework/codemodder-base/src/main/java/io/codemodder/RemediationCodemod.java new file mode 100644 index 000000000..cd7cb717e --- /dev/null +++ b/framework/codemodder-base/src/main/java/io/codemodder/RemediationCodemod.java @@ -0,0 +1,19 @@ +package io.codemodder; + +import io.codemodder.codetf.CodeTFReference; +import io.codemodder.codetf.CodeTFResult; + +import java.util.List; + +/** A codemod that is meant to be given a result, find and modify the right files, and return a completed {@link CodeTFResult}. */ +public interface RemediationCodemod { + + /** Run the codemod */ + CodeTFResult run(RemediationContext context); + + /** Codemod ID, like "semgrep:java/xss". */ + String getId(); + + /** References for more reading about this codemod. */ + List getReferences(); +} diff --git a/framework/codemodder-base/src/main/java/io/codemodder/RemediationContext.java b/framework/codemodder-base/src/main/java/io/codemodder/RemediationContext.java new file mode 100644 index 000000000..b1593def7 --- /dev/null +++ b/framework/codemodder-base/src/main/java/io/codemodder/RemediationContext.java @@ -0,0 +1,22 @@ +package io.codemodder; + +import com.contrastsecurity.sarif.SarifSchema210; + +import java.nio.file.Path; +import java.util.List; +import java.util.Optional; + +/** A context that is passed to a {@link RemediationCodemod}. */ +public interface RemediationContext { + + /** The project directory to be analyzed/fixed. */ + CodeDirectory directory(); + + Optional findSarifByVendor(String vendorName); + + List sonarHotspotPaths(); + + List sonarIssuePaths(); + + List contrastAssessPaths(); +}