🔍

CodeLens — AI Code Review

Paste any code snippet and receive a structured, multi-dimensional AI review. CodeLens surfaces bugs, style violations, complexity issues, and security vulnerabilities — with actionable fix suggestions and a cleaned-up diff view.

devtools vibe coding static analysis prompt engineering
01
Inline Review Panel
Code input on the left, structured AI issues on the right
codelens.codelab.sh/review
📝 Review
📊 Score
🔀 Diff
📜 History
⚙️ Settings
Code Review
Python 3 🔍 Analyze
Input Code Python
def get_user(user_id):
  import sqlite3
  conn = sqlite3.connect("users.db")
  cur = conn.cursor()
  query = f"SELECT * FROM users WHERE id={user_id}"
  cur.execute(query)
  return cur.fetchone()

def process_users(ids):
  results = []
  for i in range(len(ids)):
    results.append(get_user(ids[i]))
  return results
Issues Found 3 issues
🔴
SQL Injection Vulnerability
Line 5: f-string interpolation in SQL query allows direct injection. Use parameterized queries instead.
security · critical
🟡
Import Inside Function
Line 2: Importing sqlite3 inside function is called on every invocation. Move to module level.
style · medium
🔵
Use Enumerate Instead of range(len())
Line 11: for i in range(len(ids)) is non-Pythonic. Use for id in ids.
style · low
02
Quality Score Dashboard
Multi-dimensional quality grades across four review dimensions
codelens.codelab.sh/score
📝 Review
📊 Score
🔀 Diff
📜 History
Quality Score Report
get_user.pyExport PDF
D
Security
2.1 / 10 · Critical
C
Style
5.8 / 10 · Needs work
B+
Complexity
8.0 / 10 · Good
A
Readability
9.1 / 10 · Excellent
Security Style Complex Read Bugs
Priority Fix List
1. 🔴 Fix SQL injection — use ? placeholders
2. 🟡 Move import to module level
3. 🔵 Replace range(len()) with direct iteration
03
AI-Suggested Diff
Side-by-side before/after view of AI-corrected code
codelens.codelab.sh/diff
📝 Review
📊 Score
🔀 Diff
📜 History
AI-Suggested Diff
Side by SideApply All Fixes
Before −7 issues
def get_user(user_id):
  import sqlite3
  conn = sqlite3.connect("users.db")
  cur = conn.cursor()
  query = f"SELECT * FROM users WHERE id={user_id}"
  cur.execute(query)
  return cur.fetchone()
def process_users(ids):
  results = []
  for i in range(len(ids)):
    results.append(get_user(ids[i]))
After (AI Fixed) +6 improvements
+import sqlite3
def get_user(user_id):
  conn = sqlite3.connect("users.db")
  cur = conn.cursor()
+  query = "SELECT * FROM users WHERE id=?"
+  cur.execute(query, (user_id,))
  return cur.fetchone()
def process_users(ids):
+  return [get_user(uid) for uid in ids]