A Python package for RefaClass
Project description
refa-class
Single Responsibility Principle
checker
Description
This library detects classes in your source code that may violate the Single Responsibility Principle. If a method does not exist in a class, that class is ignored.
Getting Started
Notice
- The first run will take some time as the model needs to be downloaded.
Installing
-
refa-class can be installed using pip:
pip install refaclass
-
local environment
If you want to run the code locally, or change or modify it, you can install from the repo directly:git clone https://github.com/hirokazuniimoto/refa-class.git cd refa-class pip install -r requirements.txt pip install -r requirements.dev.txt
run in local environment
python3 -m refaclass.main The following arguments are optional: -d --dir directory path -o --output output [terminal csv] -t --threshold cosine similarity threshold between [method and method] [class and method] (detects below threshold) default: 0.5
you can use Visual Studio Code Dev Containers extension to create container
Executing program
-
you can check python
class
just like this:cd [project] refaclass The following arguments are optional: -d --dir directory path -o --output output [terminal csv] -t --threshold cosine similarity threshold between [method and method] [class and method] (detects below threshold) default: 0.5
Result
OK
Classes that are not considered to violate the Single Responsibility PrincipleNG
Classes considered to violate the Single Responsibility Principle- Show detected methods
Test
- run test
python -m unittest discover tests
- measure coverage
python -m coverage run -m unittest discover tests
python -m coverage report -m
Setting File
This project utilizes configuration files refaclass.ini
to customize its behavior and settings. Configuration files play a crucial role in tailoring the application to your specific needs.
- File Location: The configuration files arelocated at the root of the project.
Configuration Sections
- refaclass-[class name]
- refaclass-[file name]
- refaclass-[directory name]
you can also use regular expressions
Configuration Parameters
- ignore_checks: if set to
True
, ignore file or class specified in that section - is_file: if set to
True
then the content of the section is considered a file (if set toFalse
or nois_file
parameters then class) - is_dir: if set to
True
then the content of the section is considered a directory (if set toFalse
or nois_file
parameters then class)
Example
[refaclass-test_.*.py]
is_file = True
ignore_checks = True
[refaclass-Test.*]
ignore_checks = True
[refaclass-tests/test_core.*]
is_dir = True
ignore_checks = True
Author
Version History
License
This project is licensed under the MIT License - see the LICENSE file for details
Reference paper
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
Hashes for refaclass-2.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3df5c9f1550ecbeb5174fcff10d1cf10a68b2f0f3f55da32586d1ce35a4aa6da |
|
MD5 | 6566b9a4042e9d7e7b69c06fa0ec275b |
|
BLAKE2b-256 | 587394240b8c0824a3e66180a3fabb03068faaa8e2da1e392e27fdc8bc8af00c |