Static analysis tool for detecting bugs offline using small ML models
Project description
codeXglitch
๐ Offline Static Analysis for Python โ Find logic errors, performance issues, and security bugs without cloud services.
codeXglitch is a lightweight static analysis tool that helps beginner and experienced developers catch bugs early. It uses small, efficient pattern-based detectors and doesn't require internet or external ML services.
Features
โจ Works Offline โ No cloud, no internet required
๐ค Lightweight ML Models โ Uses pattern-based detection, not heavy neural networks
๐ Detects Multiple Bug Types:
- Logic Errors (division by zero, always-true conditions, suspicious comparisons)
- Performance Issues (nested loops, inefficient operations)
- Security Vulnerabilities (eval/exec usage, hardcoded secrets, unsafe functions)
๐ Beginner-Friendly โ Clear error messages with suggestions
โก Fast Analysis โ Analyzes files and directories in milliseconds
Installation
pip install -e .
Usage
Command Line
# Analyze a single file
codeXglitch analyze myfile.py
# Analyze entire directory
codeXglitch analyze src/ --recursive
# Output as JSON
codeXglitch analyze src/ --format json
# Only show critical issues
codeXglitch analyze src/ --severity critical
Python API
from codesense import CodeAnalyzer
analyzer = CodeAnalyzer()
# Analyze a file
issues = analyzer.analyze_file("myfile.py")
# Analyze code directly
code = """
x = 10 / 0 # Division by zero
if y == True: # Suspicious comparison
pass
"""
issues = analyzer.analyze_code(code)
for issue in issues:
print(issue)
if issue.suggestion:
print(f" โ {issue.suggestion}")
Output Examples
Text Format (Default)
myfile.py:1:8 [CRITICAL] L005: Division by zero will cause runtime error
โ Check denominator before division
myfile.py:2:4 [LOW] L001: Use 'if x:' instead of 'if x == True'
โ Use 'if x:' for clearer code
Summary:
Critical: 1
Low: 1
JSON Format
[
{
"file": "myfile.py",
"line": 1,
"column": 8,
"code": "L005",
"message": "Division by zero will cause runtime error",
"severity": "critical",
"rule": "division_by_zero",
"suggestion": "Check denominator before division"
}
]
Supported Rules
Logic Errors (L-series)
- L001: Comparison with True (use
if x:instead) - L002: Comparison with False (use
if not x:instead) - L003: Condition is always True
- L004: Condition is always False
- L005: Division by zero
Performance Issues (P-series)
- P001: Nested loop with append() - Consider list comprehension
- P002: len() called in loop - Store length in variable
Security Issues (S-series)
- S001: Use of eval() - Use ast.literal_eval() or json.loads() instead
- S002: Use of exec() - Avoid for security reasons
- S003: Unvalidated user input() - Validate and sanitize input
- S004: Use of os.system() - Use subprocess.run() with shell=False
- S005: Hardcoded secrets - Use environment variables
Miscellaneous (M-series)
- M001: Typo detection
- M002: Suspicious variable names
Development
Install Development Dependencies
pip install -e .
pip install -r requirements-dev.txt
Run Tests
python tests/test_analyzer.py
Run Analysis on codeXglitch Itself
codeXglitch analyze src/ --recursive
How It Works
CodeSense-AI uses Python's ast module to parse code into an Abstract Syntax Tree, then applies multiple independent analyzers:
- Logic Analyzer โ Detects illogical code patterns
- Performance Analyzer โ Finds inefficient operations
- Security Analyzer โ Identifies security anti-patterns
Each analyzer uses pattern matching and simple heuristics โ no heavy ML models required!
Project Structure
codesense-ai/
โโโ src/codesense/
โ โโโ __init__.py # Main package
โ โโโ analyzer.py # Main analyzer orchestrator
โ โโโ issue.py # Issue representation
โ โโโ cli.py # Command-line interface
โ โโโ analyzers/
โ โ โโโ logic_analyzer.py
โ โ โโโ performance_analyzer.py
โ โ โโโ security_analyzer.py
โ โโโ models/
โ โโโ ml_predictor.py # Simple ML-based pattern detection
โโโ tests/
โ โโโ test_analyzer.py
โโโ README.md
Limitations
- Analyzes Python code only
- Pattern-based detection (not AI/ML cloud)
- Best suited for beginner-to-intermediate code
- May produce false positives/negatives
License
MIT License - see LICENSE file for details
Contributing
Contributions welcome! Feel free to:
- Report bugs and issues
- Suggest new detection rules
- Improve existing analyzers
- Add more test cases
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file codexglitch-0.1.0.tar.gz.
File metadata
- Download URL: codexglitch-0.1.0.tar.gz
- Upload date:
- Size: 11.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2cd8a8502f0da39ef0ff642b8e1eb721a51c78c0b6cb1ffb67fafed5272caa4
|
|
| MD5 |
91ee529197e9fcebe18632f7fe1a3111
|
|
| BLAKE2b-256 |
9f00cd76e134bf1b2674e36273cd31bf3b1cfc8c35404332f8f4e17744cd7bec
|
File details
Details for the file codexglitch-0.1.0-py3-none-any.whl.
File metadata
- Download URL: codexglitch-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da38cd14e7d716661c28d2db01d4632951175c1368426ae5cdbb97a606133646
|
|
| MD5 |
87c859d0620d753a3f6b946cdfcb5d3c
|
|
| BLAKE2b-256 |
47190d5d423635759bb366c69ba4d1777c6ca83eadcea705081f81115b3731f9
|