Package io.codemodder.plugins.llm
Class SarifToLLMForBinaryVerificationAndFixingCodemod
java.lang.Object
io.codemodder.RawFileChanger
io.codemodder.SarifPluginRawFileChanger
io.codemodder.plugins.llm.SarifToLLMForBinaryVerificationAndFixingCodemod
- All Implemented Interfaces:
io.codemodder.CodeChanger
public abstract class SarifToLLMForBinaryVerificationAndFixingCodemod
extends io.codemodder.SarifPluginRawFileChanger
An extension of
SarifPluginRawFileChanger
that uses large language models (LLMs) to more
deeply analyze and then fix the files found by the static analysis tool.
It has three phases:
- Use a SARIF file to find locations of interest for analysis
- Analyze the "threat" of the location found using a more inexpensive or faster model
- Using a more reliable (and more expensive model), confirm the finding and rewrite the code
-
Field Summary
Fields inherited from class io.codemodder.RawFileChanger
reporter
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
SarifToLLMForBinaryVerificationAndFixingCodemod
(io.codemodder.RuleSarif sarif, OpenAIService openAI) -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract String
Instructs the LLM on how to fix the threat.protected abstract String
getThreatPrompt
(io.codemodder.CodemodInvocationContext context, List<com.contrastsecurity.sarif.Result> results) Instructs the LLM on how to assess the risk of the threat.protected abstract boolean
isPatchExpected
(com.github.difflib.patch.Patch<String> patch) Returns whether the patch returned by the LLM is within the expectations of this codemod.List<io.codemodder.CodemodChange>
onFileFound
(io.codemodder.CodemodInvocationContext context, List<com.contrastsecurity.sarif.Result> results) Methods inherited from class io.codemodder.SarifPluginRawFileChanger
visitFile
Methods inherited from class io.codemodder.RawFileChanger
getDescription, getIndividualChangeDescription, getReferences, getSourceControlUrl, getSummary
-
Constructor Details
-
SarifToLLMForBinaryVerificationAndFixingCodemod
protected SarifToLLMForBinaryVerificationAndFixingCodemod(io.codemodder.RuleSarif sarif, OpenAIService openAI)
-
-
Method Details
-
onFileFound
public List<io.codemodder.CodemodChange> onFileFound(io.codemodder.CodemodInvocationContext context, List<com.contrastsecurity.sarif.Result> results) - Specified by:
onFileFound
in classio.codemodder.SarifPluginRawFileChanger
-
getThreatPrompt
protected abstract String getThreatPrompt(io.codemodder.CodemodInvocationContext context, List<com.contrastsecurity.sarif.Result> results) Instructs the LLM on how to assess the risk of the threat.- Returns:
- The prompt.
-
getFixPrompt
Instructs the LLM on how to fix the threat.- Returns:
- The prompt.
-
isPatchExpected
Returns whether the patch returned by the LLM is within the expectations of this codemod.- Returns:
true
if the patch is expected; otherwise,false
.
-