mcp-server-semgrep
Version:
MCP Server for Semgrep Integration - static code analysis with AI
42 lines (41 loc) • 1.81 kB
YAML
rules:
- id: no-null-string-field
patterns:
- pattern-inside: |
class $M(...):
...
- pattern-not: $F = django.db.models.CharField(..., null=True, unique=True, blank=True, ...)
- pattern-not: $F = django.db.models.TextField(..., null=True, unique=True, blank=True, ...)
- pattern-either:
- pattern: $F = django.db.models.CharField(..., null=True, ...)
- pattern: $F = django.db.models.TextField(..., null=True, ...)
message: >-
Avoid using null on string-based fields such as CharField and TextField. If a string-based field
has null=True, that means it has two possible values for "no data": NULL, and the empty string. In
most cases, it's redundant to have two possible values for "no data;" the Django convention is to
use the empty string, not NULL.
languages: [python]
severity: WARNING
metadata:
category: correctness
technology:
- django
- id: string-field-must-set-null-true
patterns:
- pattern-inside: |
class $M(...):
...
- pattern-not: $F = django.db.models.CharField(..., unique=True, blank=True, null=True, ...)
- pattern-not: $F = django.db.models.TextField(..., unique=True, blank=True, null=True, ...)
- pattern-either:
- pattern: $F = django.db.models.CharField(..., unique=True, blank=True, ...)
- pattern: $F = django.db.models.TextField(..., unique=True, blank=True, ...)
message:
If a text field declares unique=True and blank=True, null=True must also be set to avoid unique constraint violations
when saving multiple objects with blank values.
languages: [python]
severity: ERROR
metadata:
category: correctness
technology:
- django