| """ |
| 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 [] |
|
|