| """ | |
| Very simple static analyzer (Python only for v0.1) | |
| """ | |
| import subprocess | |
| import shutil | |
| from typing import List, Dict | |
| def run_python_flake(path: str) -> List[Dict]: | |
| if shutil.which("flake8") is None: | |
| return [] | |
| try: | |
| out = subprocess.check_output(["flake8", path, "--format=%(row)d:%(col)d:%(code)s:%(text)s"], stderr=subprocess.STDOUT) | |
| text = out.decode("utf-8", errors="ignore").strip() | |
| findings = [] | |
| for line in text.splitlines(): | |
| parts = line.split(":", 3) | |
| if len(parts) == 4: | |
| row, col, code, msg = parts | |
| findings.append({ | |
| "tool": "flake8", | |
| "code": code, | |
| "line": int(row), | |
| "col": int(col), | |
| "message": msg.strip() | |
| }) | |
| return findings | |
| except subprocess.CalledProcessError: | |
| return [] | |
| def quick_analyze(path: str, language: str) -> List[Dict]: | |
| if language == "python": | |
| return run_python_flake(path) | |
| return [] | |