# Zoinks - Thread Safety Analysis Tool

`Zoinks` — это статический анализатор для проверки безопасности многозадачности (thread safety) в Python коде. Он проверяет, используются ли блокировки и защищены ли переменные в многозадачных контекстах, что помогает предотвратить гонки данных и другие проблемы с потоками.

## Установка

### Build from source
Чтобы установить и использовать анализатор, выполните следующие шаги:

1. Склонируйте репозиторий или загрузите проект:

   ```bash
   git clone <ссылка на репозиторий>
   cd <папка с проектом>
   ```

2. Установите сам проект:

```bash
pip install .
```

### Install from PyPi
1. Установите проект из репозитория PyPi командой:
```bash
pip install tsa-zoinks
```

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

После установки вы можете использовать анализатор через командную строку, передав файл Python, который нужно проанализировать:
```bash
zoinks <путь_к_файлу.py>

```
Пример:
```bash
zoinks test_file.py
```

## Описание предупреждений:
`requires_lock` — если функция, помеченная этим декоратором, не использует блокировку в своем теле, будет выведено предупреждение.
`guards_variable` — если переменная, помеченная этим декоратором, не защищена должным образом в функции (например, не использует блокировку), будет выведено предупреждение.
`shared_variable` — если разделяемая переменная используется внутри блока с блокировкой, будет выведено предупреждение.

Пример:
```python
@shared_variable('shared_var')
def update_shared_var():
    with lock:
        shared_var = 100
```
При анализе этого кода будет выведено предупреждение:
```commandline
Warning: Shared variable 'shared_var' should not be used with a lock.
```
