惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
有赞技术团队
有赞技术团队
IT之家
IT之家
博客园 - 聂微东
Jina AI
Jina AI
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
Apple Machine Learning Research
Apple Machine Learning Research
WordPress大学
WordPress大学
小众软件
小众软件
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Visual Studio Blog
雷峰网
雷峰网
酷 壳 – CoolShell
酷 壳 – CoolShell
阮一峰的网络日志
阮一峰的网络日志
宝玉的分享
宝玉的分享
博客园 - 三生石上(FineUI控件)
大猫的无限游戏
大猫的无限游戏
博客园 - Franky
量子位
月光博客
月光博客
博客园 - 【当耐特】
博客园 - 叶小钗

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
AINAScan: Scan Your Entire Project (ZIP/Folder) for 48 Se...
Moon sehwan · 2026-06-23 · via DEV Community

Moon sehwan

If you use AI coding assistants (Cursor, Copilot, Windsurf), you already know the pattern: the code looks right, the tests pass, and then production breaks with a bug that was sitting in plain sight.

I built AINAScan to catch exactly those bugs — and today it scans entire projects via ZIP upload, not just single files.

🔗 ainascan.dev — try it free →


What it scans

48 patterns across 3 categories — pure AST analysis, no LLM guessing:

🛡 Security (24 patterns — BLOCK)

The ones that will get you in the news:

Pattern What it catches
SQL_INJECTION_RISK f-string / %-format SQL — classic
COMMAND_INJECTION subprocess + shell=True + user input
PATH_TRAVERSAL open() with unvalidated user path
XSS_RISK Unsanitized user input in response / Markup() without escaping
INSECURE_DESERIALIZATION pickle.loads() / yaml.load() without SafeLoader — RCE
DEBUG_MODE_RISK debug=True in Flask/FastAPI — exposes full stack traces in prod
HARDCODED_SECRET api_key = "sk-abc123" literally in source
SSRF_RISK HTTP request with user-controlled URL
EVAL_EXEC_RISK eval()/exec() with dynamic input
TYPE_UNSAFE_ACCESS float(d.get("k")) without None check — guaranteed TypeError
DB_SCHEMA_DRIFT SQL column not in actual DB schema — runtime crash
+ 13 more CORS, CSRF, IDOR, template injection, weak crypto...

🤖 Vibe-Coding Structural Bugs (13 patterns — BLOCK)

These are the AI-specific ones. Semgrep doesn't catch them. Bandit doesn't either.

# DEAD_DB_RESULT — AI fetched data and forgot to use it
def get_user_stats(user_id):
    rows = db.execute("SELECT * FROM events WHERE user_id=?", (user_id,)).fetchall()
    return {"status": "ok"}  # ← rows is never used

# STUB_SKELETON — AI wrote the function signature and stopped
def process_payment(amount, card_token):
    pass  # ← production code

# INPUT_OUTPUT_DISCONNECTED — parameters have no effect on return
def validate_email(email):
    return {"valid": True}  # ← ignores the email entirely

# MISSING_WRITE — save() with no actual INSERT/UPDATE
def save_user(data):
    return {"status": "saved"}  # ← no DB write happened

These patterns show up in AI-generated code constantly. The model writes a plausible function signature and return value, but the logic in between is missing.

🏗 Design Smells (11 patterns — WARN)

God objects, circular imports, refused bequests, duplicate code blocks — the Martin Fowler classics, caught automatically.


ZIP / Folder Scan — scan your whole project at once

This is the big one. Instead of uploading files one by one:

  1. Zip your project folder
  2. Drop it on AINAScan
  3. Get results for up to 200 files in parallel

Every file gets the full 48-pattern check. The results show:

  • Total BLOCK / WARN counts across the project
  • Per-file breakdown
  • Which files are clean vs. which need attention

Max ZIP size: 50 MB. Free for members (star the GitHub repo to unlock).


What the scan results look like

For each file you get:

1. Pattern checklist — all 48 checks, ✅ PASS / 🔴 BLOCK / ⚠️ WARN per pattern

2. Senior Code Analysis — 7 additional patterns:

  • SILENT_FAILURE — broad except that always returns success
  • EMPTY_EXCEPTexcept: pass (error swallowed silently)
  • DEEP_NESTING — 5+ levels of nested if/for
  • PARAM_SHADOW — parameter reassigned inside function
  • INCONSISTENT_RETURN — mixed None and typed returns

3. Code Structure

  • Function count, class count, danger sinks, validators
  • Detected libraries (subprocess, sqlite3, requests...)
  • Full function list with SINK / VALIDATOR badges
  • Mermaid call graph source

4. 🧠 AI Confidence badges on each BLOCK issue

BLOCK  SQL_INJECTION_RISK  line 47  🧠 98% · L3×6

The 🧠 98% · L3×6 means AINA's Phase 3 causal reasoning engine is 98% confident this is a real vulnerability, backed by 6 L3 causal chain matches from its knowledge base (1.9M+ edges, 133K+ causal relations).

High confidence (≥90%) = red badge. Medium (≥70%) = orange. Below = grey.


What it catches that others miss

Synthetic test cases based on real AI-generated bug patterns:

Finding AINAScan Semgrep (free) Bandit Claude inline
COMMAND_INJECTION (shell=True + user input) ✅ BLOCK
COMMAND_INJECTION (f-string in subprocess) ✅ BLOCK
PATH_TRAVERSAL (open with user path) ✅ BLOCK ⚠️ partial
MISSING_WRITE (no INSERT in save fn) ✅ BLOCK
FAKE_ASYNC (blocking event loop) ✅ WARN
LLM_OUTPUT_INJECTION (AI output → eval) ✅ BLOCK
Interprocedural taint (1-hop) ✅ BLOCK

The interprocedural taint tracking is worth calling out — it catches cases where tainted user input passes through a function boundary before hitting a dangerous sink. Most free tools don't do this.


9 languages supported

Python · JavaScript · TypeScript · Go · Ruby · Java · PHP · Kotlin · C/C++

Python gets the deepest analysis (all 48 patterns + senior analysis + structure + AI advisor). Other languages get the core security patterns via tree-sitter AST.


How to use it

Single file:

  1. Go to AINAScan
  2. Paste your code or upload a file
  3. Click Scan

Whole project (ZIP):

  1. ⭐ Star github.com/Moonsehwan/aina-scan
  2. Sign in with GitHub (unlocks ZIP scan + scan history + 7-section docs)
  3. Zip your project, drop it on the ZIP scanner
  4. Get results for all files in ~10 seconds

Free for members. No code is stored on the server — everything is analyzed in memory and discarded after the response.


7-Section Auto Documentation

Member feature: upload a ZIP and get a Markdown document with:

  1. Project Structure — file tree + function/class/API counts
  2. Function Reference — name · line · params · return type
  3. Dependenciesrequirements.txt parsed
  4. Mermaid Diagram — module dependency graph
  5. API Endpoints — FastAPI/Flask auto-detected
  6. DB Schema — SQLAlchemy Column extraction
  7. Validation Status — BLOCK/WARN summary per file

Pure AST — no LLM, no API calls, instant.


The benchmark numbers

  • P=R=F1=100% on 90-case benchmark (30 TP + 30 TN Python, 30 multilang)
  • Zero false positives on top-10 open source repos (10/10 clean)
  • 9 languages · tree-sitter AST · deterministic

If you're shipping AI-generated code and want a second opinion before it hits production — give it a try. Takes 5 seconds per file.

Feedback welcome in the comments — especially if you find a false positive or a pattern we're missing.