Your green light to ship with confidence.

AI Code Review Platform

Your team is writing more code with AI. DeepSource automates code reviews, so you can ship to production faster with confidence.

14-day free trial, no credit card needed
For growing teams and enterprises
Ruminating…

Platform

Deep code review with hybrid static analysis and AI agents. High-signal, low false-positive issues and structured feedback across security, quality, complexity, and coverage.

Inline review on pull requests

Catch bugs, anti-patterns, and security vulnerabilities on every pull request. Powered by 5,000+ deterministic rules along with our state-of-the-art AI review agent.

deepsourcebotrevieweda few minutes ago
deepsourcebotleft a comment

DeepSource reviewed changes in the commit range b76c8fa...63debb2 on this pull request. Below is the summary for the review, and you can see the individual issues we found as review comments.

payments/reconciliation.py
Comment on lines +142 to +144
142+ for merchant_id, txn_group in groupby(
143+ pending_transactions, key=lambda txn: txn.merchant_id
144+ ):
deepsourcebota few minutes ago

itertools.groupby without sorting causes incorrect grouping

The code uses itertools.groupby on pending_transactions, a queryset without a guaranteed order. groupby only groups consecutive elements with the same key. If transactions for the same merchant are not adjacent, they will be settled in separate batches, leading to duplicate payouts.

Add a sort operation on pending_transactions by merchant_id before the groupby call. This ensures all transactions for the same merchant are grouped together for a single settlement.

invoicing/services/export.py
Comment on lines +78 to +81
78+ result = subprocess.run(
79+ cmd,
80+ shell=True,
81+ capture_output=True
deepsourcebota few minutes ago

Potential command injection vulnerability with shell=True

Using subprocess.run with shell=True to generate invoice PDFs can lead to command injection if the cmd variable includes merchant-supplied data such as invoice numbers or company names. This is a security risk that could allow attackers to execute arbitrary commands on the server.

Consider using shell=False and passing the command as a list of arguments instead. This prevents shell interpretation of special characters in merchant-provided input.

api/middleware/auth.py
Comment on lines +53 to +55
53+ api_key = request.headers.get("X-Api-Key")
54+ if api_key:
55+ merchant = db.query(Merchant).filter(Merchant.api_key == api_key).first()
deepsourcebota few minutes ago

API key comparison vulnerable to timing attacks

The merchant API key is compared directly using == which is vulnerable to timing attacks. An attacker could potentially recover the key character by character by measuring response time differences, compromising merchant accounts and payment data.

Use a constant-time comparison function like secrets.compare_digest() to prevent timing-based side-channel attacks on sensitive API key comparisons.

Autofix™

Verified, pre-generated patches for most issues, so you can fix issues faster without breaking your flow.

String-based query with JSON_EXTRACT risks SQL injection

The code constructs an SQL DELETE statement by directly formatting self.table_name into the query string and using user-controllable parameters with JSON_EXTRACT.

Critical Security AI REVIEW
472 with self._get_cursor() as cur:
473 try:
474 # Use JSON_EXTRACT for JSON field access
475 cur.execute(
476 f"DELETE FROM `{self.table_name}` WHERE JSON_EXTRACT(meta, %s) = %s", 1
477 (f"$.{key}", value),
478 )
479 except Exception as e:
480 logger.warning("Error deleting by metadata field: %s", e)
481 raise
api/core/rag/datasource/vdb/doris/doris_vector.py

Pull request gates

Define guardrails and prevent pull requests from merging when the PR quality is not satisfactory.

Some checks haven't completed yet

5 pending checks

DeepSource
DeepSource: Python Waiting for status to be reported — Analysis in progress...
DeepSource
DeepSource: JavaScript Waiting for status to be reported — Analysis in progress...
DeepSource
DeepSource: Test coverage Waiting for status to be reported — Analysis in progress...
DeepSource
DeepSource: Secrets Waiting for status to be reported — Analysis in progress...
DeepSource
DeepSource: package.json Waiting for status to be reported — SCA in progress...

PR Report Card

More than just issues. Structured feedback to your AI agent to help improve quality of any pull request.

PR Report Card
Security
4
Reliability
19
Complexity
3
Hygiene
0
Coverage
11
Overall PR Quality
Focus AreaReliability
Guidance

Fix the high-severity _check_milestones call outside transaction risk in contrib/referrals/team_referral.py to prevent inconsistent states.

Secrets Detection

Prevent API keys, tokens, and sensitive credentials from ever reaching production. Validated against 165+ providers.

OSS Vulnerability Scanning

See which dependency vulnerabilities actually affect your code with reachability and taint analysis.

Code Coverage

Track coverage and see which lines in your code are untested. Enforce thresholds so nothing ships without tests.

Compliance Reporting

Stay audit-ready with security vulnerability reports mapped to OWASP® Top 10 and SANS Top 25.

Infrastructure-as-Code Review

Catch security misconfigurations in Terraform and CloudFormation before they become incidents.

License Compliance

Catch copyleft and restrictive OSS licenses before they create legal risk for your product.

MCP Server Coming soon

Feed review insights and structured feedback directly into your AI coding agent or any MCP-compatible app.

API & Webhooks

Bring DeepSource into your workflows with a full GraphQL API and real-time webhook events.

Full Codebase Review

Go beyond pull requests. Scan your entire existing codebase and track code health and security hotspots over time.

With DeepSource's pull request analysis workflow, everything is integrated — right at the point of merge, and this has been a game changer for us.

Reed Wilson, Engineering Manager

Reed Wilson logo

Benchmarks

Highest accuracy in finding bad and insecure code. DeepSource is state-of-the-art on OpenSSF CVE Benchmark.

DeepSource
82.42%
OpenAI Codex
81.21%
Devin Review
80.61%
Cursor BugBot
78.79%
Greptile
73.94%
Claude Code
71.52%
CodeRabbit
61.21%
Semgrep (CE)
58.18%
What's Accuracy?
Measure of how often the code review engine gets it right: detecting real vulnerabilities in vulnerable code, and recognizing that patched code is actually fixed.
About this benchmark

The OpenSSF CVE Benchmark consists of code and metadata for over 200 real-life security vulnerabilities in JavaScript and TypeScript, which have been validated and fixed in open-source projects.

It evaluates tools on two key metrics: their ability to detect the vulnerability (avoiding false negatives) and their ability to recognize the validated patch (avoiding false positive).

Enterprise Ready

Code review intelligence for startups and Fortune 500s. DeepSource is secure by design and built for scale.

0+
Connected repositories
0+
Teams on platform
0.00%
Uptime
SOC 2 Compliance
SOC 2 Type II Compliant
SOC 2 Compliance
GDPR Compliant

The AI Code Review Platform
for fast-moving teams and their agents.

14-day free trial, no credit card needed
For growing teams and enterprises