File size: 1,109 Bytes
e1d6e8a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
BASE_SYSTEM = (
    "You are a helpful code reviewer. For each finding provide: title, severity (blocker/high/medium/low/nit), "
    "a short description, and a suggested fix if possible. Always include confidence percent (0-100). "
    "If you are unsure, say 'confidence <60%'."
)

PERSONA_PROMPTS = {
    "general": "Review for readability and correctness.",
    "security": "Focus on security issues like injections, unsafe crypto, or secrets.",
    "performance": "Focus on performance and complexity issues.",
    "style": "Focus on code style, clarity, and idiomatic improvements."
}

def build_review_prompt(filename: str, code: str, analyzer_evidence: list, persona: str = "general") -> str:
    prompt = BASE_SYSTEM + "\n\n"
    prompt += f"Persona: {PERSONA_PROMPTS.get(persona, PERSONA_PROMPTS['general'])}\n\n"
    prompt += f"Filename: {filename}\nCode:\n{code[:20000]}\n\n"
    if analyzer_evidence:
        prompt += "Static analyzer findings:\n"
        for ev in analyzer_evidence[:10]:
            prompt += str(ev) + "\n"
    prompt += "\nReturn JSON array of findings."
    return prompt