Monitor and manage deeply customizable metrics about your python code using ASTs
Project description
Overview
Monitor and manage deeply customizable metrics about your python code using ASTs.
codewatch lets you write simple python code to track statistics about the state of your codebase and write lint-like assertions on those statistics. Use this to incrementally improve and evolve the quality of your code base, increase the visibility of problematic code, to encourage use of new patterns while discouraging old ones, to enforce coding style guides, or to prevent certain kinds of regression errors.
Installation
Python: 2.7, 3.6, 3.7
Execute the following in your terminal:
pip install codewatch
Usage
codewatch codewatch_config_module
codewatch_config_module
is a file that should contain the following two methods:
1. Visit all directories:
def directory_filter(_dir_name):
return True
2. Visit all files:
def file_filter(_file_name):
return True
Tune these filters to suit your needs.
Then, you should use the @visit
decorator. It follows a similar API to ast.NodeVisitor
:
from codewatch import visitor
def _count_import(stats):
stats.increment('total_imports_num')
@visit('import')
def count_import(self, node):
_count_import(self.stats)
@visit('importFrom')
def count_import_from(self, node):
_count_import(self.stats)
This will build a stats dictionary that contains something like the following:
{
"total_imports_num": 763
}
Then, once again in the codewatch_config_module
you can add assertions against this stat dictionary using the @assertion
decorator
from codewatch import assertion
@assertion()
def number_of_imports_not_too_high(stats):
threshold = 700
actual = stats.get('total_imports_num')
err = 'There were {} total imports detected which exceeds threshold of {}'.format(actual, threshold)
assert actual <= threshold, err
In this case, the assertion would fail since 763 is the newStat
and the message:
There were 763 total imports detected which exceeds threshold of 700
would be printed
Contributing
Helpful resources
TODO
Contributors
Thanks goes to these wonderful people! (Emoji key)
Josh Doncaster Marsiglio 💻 |
Rohit Jain 💻 |
Chris Abiad 💻 |
---|---|---|
Francois Campbell 🤔💻 |
Monica Moore 🎨 |
|
Jake Bolam 🚇 |
Shouvik D'Costa 🚇 |
Siavash Bidgoly 🚇 |
Credits
Special thanks to Carol Skelly for donating the 'tophat' GitHub organization.
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
File details
Details for the file codewatch-0.0.16.tar.gz
.
File metadata
- Download URL: codewatch-0.0.16.tar.gz
- Upload date:
- Size: 14.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9a5c9e86ece9330c727ee58dee0ec637256887ee6f51bf0816cf85685b2bde4b |
|
MD5 | 9b797c876575b2b1ca183f261d5ee278 |
|
BLAKE2b-256 | cfe4d2efee763ce0cfee6ee7cd26ac4a7af04a7131d166d075ee2066cb31c523 |
File details
Details for the file codewatch-0.0.16-py2.py3-none-any.whl
.
File metadata
- Download URL: codewatch-0.0.16-py2.py3-none-any.whl
- Upload date:
- Size: 24.9 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 85a0934dc30e50a1f2308a87ca5ea6fa0eb5af7845aaec10944a585cea1a5c6f |
|
MD5 | 56df2a313911a6d86e6b3a0acbc4be14 |
|
BLAKE2b-256 | 19bf589e2942a60a5bb18a29e7a942ff655b4f1665e06dff551b43aa19d9b506 |