Skip to main content

Your code is shit. Here's why.

Project description

ShitLint 💩🔍

Your code is shit. Here's why.

ShitLint is the AI code reviewer that cuts through the fluff and calls out the architectural dumpster fires hiding in your codebase. Because sometimes, brutal honesty is what is needed, even when it hurts.

Why ShitLint Exists

Ever wonder why your "simple feature" took 3 weeks to implement? It's because your code is a tangled mess of:

  • Copy-pasted functions everywhere (DRY? Never heard of it)
  • 200+ line files of spaghetti bullshit
  • Abstractions that abstract nothing
  • Imports that look like some shat on your keyboard

Traditional linters catch typos. ShitLint catches architectural bullshit.

What ShitLint Actually Does

$ shitlint .
⏺ FLAGGED BULLSHIT:

🚨 DRY VIOLATION:
- user_service.py:45-67 and admin_service.py:12-34 are literally the same function
- Did you copy-paste this? Be honest.

🚨 GIANT FILE ALERT:
- database.py:847 lines - This isn't a file, it's a novel
- Split this monstrosity before it gains sentience

🚨 BULLSHIT ABSTRACTION:
- utils.py:23 - A function called "doStuff" that does 47 different things
- Name your functions like a human, not a caffeinated squirrel

🚨 IMPORT CEREMONY:
- 23 imports for a 15-line file
- This isn't dependency injection, it's dependency addiction

VERDICT: Your code looks like it was written during a earthquake

Installation

pip install shitlint
# or just clone this repo and suffer with the rest of us

Usage

# Scan current directory
shitlint .

# Scan specific file
shitlint path/to/your/disaster.py

# Extra brutal mode (not recommended for sensitive developers)
shitlint --brutality brutal ./src

# Professional roasting (default)
shitlint --brutality professional ./src

# Gentle nudging (for beginners)
shitlint --brutality gentle ./src

Configuration

Create a .shitlint/config.json file to customize how brutally honest you want the feedback:

{
  "brutality": "brutal",
  "ignore_patterns": ["tests/", "*.generated.py"],
  "max_file_size": 100000,
  "llm_provider": "auto"
}

Or use the init command:

shitlint --init

Language Support

  • Python ✅ (your FastAPI spaghetti)
  • JavaScript ⏳ (your React component soup - coming soon)
  • TypeScript ⏳ (your over-engineered type gymnastics - coming soon)
  • Go ⏳ (your "simple" microservice that imports 47 packages - coming soon)
  • More languages coming (unfortunately)

FAQ

Q: Is this just a joke? A: No. Your code genuinely needs help.

Q: Why so aggressive? A: Because your linter has been lying to you. Someone has to tell the truth.

Q: Can I disable the roasting? A: You can, but then you're just running a regular linter. Where's the fun in that?

Q: Will this hurt my feelings? A: Probably. But your code will be better for it.

Contributing

Found a new way code can be terrible? We'd love to hear about it.

  1. Fork this repo
  2. Add your horror stories to the detection engine
  3. Submit a PR
  4. Watch other developers suffer

Roadmap

  • JavaScript/TypeScript support (so you can be roasted in more languages)
  • Integration with popular IDEs (so you can be roasted in real-time)
  • Team dashboard (shame your colleagues publicly)
  • AI-generated refactoring suggestions (because apparently you need help)
  • Slack integration (get roasted in meetings)
  • Custom personality modes (Gordon Ramsay, Disappointed Parent, etc.)

License

MIT - Because even terrible code deserves freedom


Remember: The first step to writing better code is admitting your current code is shit.

Built with ❤️ and a concerning amount of coffee by @iteebz


Star this repo if you're brave enough to face the truth about your 💩 code

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shitlint-0.1.0.tar.gz (26.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

shitlint-0.1.0-py3-none-any.whl (35.0 kB view details)

Uploaded Python 3

File details

Details for the file shitlint-0.1.0.tar.gz.

File metadata

  • Download URL: shitlint-0.1.0.tar.gz
  • Upload date:
  • Size: 26.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.10 Darwin/24.5.0

File hashes

Hashes for shitlint-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a67eaef3d0f6196dea44ee670b8527b2c5080a041148c587d75a58a7d0c52a2f
MD5 8a6d742209f02d09c8a31e807aa62edb
BLAKE2b-256 c5274e0ce97151c726cf5439ad683ef1b0e58d64891c4695d8c14c99a5d7282a

See more details on using hashes here.

File details

Details for the file shitlint-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: shitlint-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 35.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.10 Darwin/24.5.0

File hashes

Hashes for shitlint-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d9469291c3364331be6e7b0c9b23ac81fb4a565d23eff4223f52dfcfc0def79e
MD5 21cc82b0f4b2e01fe0f7b4eb96c5f123
BLAKE2b-256 d48741d2e773330c78f340d4fae3751f4a0043ad18651febf6f23245fff5d9c5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page