Skip to main content

A Python package for RefaClass

Project description

<ORG_NAME> PyPI - Python Version PyPI - Version PyPI - Format GitHub last commit (branch) GitHub commit activity (branch) PyPI - License

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 Principle
  • NG 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 to False or no is_file parameters then class)
  • is_dir: if set to True then the content of the section is considered a directory (if set to False or no is_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

Hirokazu Niimoto

Version History

License

This project is licensed under the MIT License - see the LICENSE file for details

Reference paper

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

refaclass-2.3.0.tar.gz (13.8 kB view hashes)

Uploaded Source

Built Distribution

refaclass-2.3.0-py3-none-any.whl (14.9 kB view hashes)

Uploaded Python 3

Supported by

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