CodeNose 👃
Code smell detection for LLMs - sniffs out duplicate logic, architecture violations, and other blind spots.
Installation
pip install codenose
Usage
from codenose import CodeNose
# Quick scan a file
result = CodeNose.quick_scan_file("/path/to/file.py")
print(f"Found {len(result.smells)} smells")
# Scan a directory
result = CodeNose.quick_scan_directory("/path/to/project")
print(f"Cleanliness: {result.cleanliness_score:.0%}")
# With custom configuration
nose = CodeNose(
max_file_lines=500,
max_function_lines=50,
canonical_filenames={"utils.py", "core.py", "models.py"}
)
result = nose.scan_file("/path/to/file.py")
Smell Types
| Type | Emoji | Description |
|---|---|---|
| syntax | 🔴 | Syntax errors |
| syspath | 💀 | sys.path manipulation |
| traceback | ☠️ | Exception without traceback |
| arch | 🏗️ | Non-canonical filename |
| facade | 🧅 | Logic in facade layer |
| dup | 👯 | Duplicate code blocks |
| long | 📏 | File/function too long |
| log | 📝 | Missing logging |
| import | 📦 | Duplicate imports |
Configuration
nose = CodeNose(
# Architecture settings
canonical_filenames={"utils.py", "core.py", ...},
exempt_dirs={"tests", "__pycache__", ...},
facade_files={"api.py", "cli.py", "mcp_server.py"},
# Thresholds
max_file_lines=400,
max_function_lines=33,
min_dup_block_size=3,
)
License
MIT
Metadata
Release files for codenose 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| codenose-0.4.1.tar.gz | 17.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| codenose-0.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 37.1 kB
Release files / codenose-0.4.1.tar.gz
| Download URL | codenose-0.4.1.tar.gz |
|---|---|
| Size | 17.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
21a83cef0b907f7a695e25f31f8a278cb749cfa6452bced3009694bb901ba30e
|
|
BLAKE2b-256 checksum How to use checksums |
1a1104c817a808c60e555e2b536e69d61d97b71545ec6aec5d978eff1bb21b69
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.6
|
Release files / codenose-0.4.1-py3-none-any.whl
| Download URL | codenose-0.4.1-py3-none-any.whl |
|---|---|
| Size | 19.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
60f8597473aad0b07a6f3816b06a62d565ae087adea7b76597136d1b325595ed
|
|
BLAKE2b-256 checksum How to use checksums |
a6a764bb134bfe03890a9ba2c6958c55d8ae6aa0cc79bbe7cbd8b10933747f09
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.6
|
Security for codenose 0.4.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.