| 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 |
|
|