Django Smelly Tokens

It is sometimes possible to tell that code stinks even without looking at it. This Django app tries to accomplish that.

Installation

pip install django-smelly-tokens

Usage

In your settings.py define SMELLY_TOKENS_APPLICATIONS list with packages you want to inspect.

In a package with code quality tests (e.g. test_tokens.py) import tests you want to check your apps against:

from smelly_tokens.test_smelly_tokens import (
    EvalTokenTestCase,
    PdbTokenTestCase,
)

Run django-admin.py test or ./manage.py test or py.test or nose or whatever runner you’re using.

Exceptions

To silence known errors PEP8-style noqa comment can be used in the beginning of a file:

# smelly_tokens: noqa

Or in-line:

eval('print 123')  # noqa

To exclude an entire directory add it’s path to SMELLY_TOKENS_EXCLUDE_DIRS list in settings.

Adding your own tokens

To create a new type of smelly token test case, inherit SmellyTokensTestCase and override _tokens list:

from django.test import TestCase
from smelly_tokens.test_smelly_tokens import SmellyTokensTestCase


class OOPTokensTestCase(SmellyTokensTestCase, TestCase):
""" OOP hater. """
_tokens = ['class', 'object', 'Object']

References