Metadata-Version: 2.4
Name: minerva-plugin
Version: 2.1.0
Summary: Minerva - Flake8 plugin for Python code quality checks (SAST)
Home-page: https://github.com/pascal65536/minerva-plugin
Author: pascal65536
Author-email: pascal65536 <pascal65536@gmail.com>
License: MIT
Project-URL: Homepage, https://github.com/pascal65536/minerva-plugin
Project-URL: Issues, https://github.com/pascal65536/minerva-plugin/issues
Keywords: flake8,linting,code-quality,static-analysis,sast
Classifier: Framework :: Flake8
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Quality Assurance
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: flake8>=3.8.0
Dynamic: author
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-python

# Minerva - Flake8 Plugin

Minerva — это плагин для Flake8, который проверяет качество кода на Python.

## Возможности

### MN001 - MN003: Проверка имён переменных
- Минимальная длина имени переменной
- Максимальная длина имени переменной
- Требование snake_case для имён

### MN004: Проверка импортов
- Чёрный список запрещённых модулей

### MN005 - MN006: Проверка строк
- Максимальная длина строки
- Запрет символов с кодом > 1000

### MN007 - MN009: Проверка коллекций
- Запрет конструкторов (list(), dict(), set())
- Белый список разрешённых типов коллекций
- Требование создания через литералы

## Установка

```bash
pip install minerva-plugin
```

## Использование

Плагин автоматически интегрируется с Flake8:

```bash
flake8 your_code.py
```

## Правила

| Код | Описание |
|-----|----------|
| MN001 | Имя переменной слишком короткое |
| MN002 | Имя переменной слишком длинное |
| MN003 | Имя не в snake_case |
| MN004 | Импорт запрещённого модуля |
| MN005 | Строка длиннее лимита |
| MN006 | Символ с кодом > лимита |
| MN007 | Использование запрещённого конструктора |
| MN008 | Использование неразрешённого типа коллекции |
| MN009 | Коллекция создана через конструктор вместо литерала |

## Настройка

Настройки хранятся в `settings/plugin.json`:

```json
{
    "min_length": 2,
    "max_length": 40,
    "allowed_single_letters": "i,j,x,y,e",
    "enforce_snake_case": true,
    "prohibited_modules": "math,re",
    "max_line_length": 123,
    "max_char_code": 1000,
    "prohibited_constructors": "list,set",
    "allowed_collections": "dict",
    "check_constructor": "list,dict"
}
```
