Metadata-Version: 2.4
Name: parser-ci-AP
Version: 0.1.27
Summary: C code parser based on Clang
Home-page: https://github.com/yourusername/parser-ci
Author: Александр
Author-email: sanyapetrooo@gmail.com
License: MIT
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.13
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: chardet==5.2.0
Requires-Dist: libclang==18.1.1
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: license-file
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# Parser CI — C Parser на базе Clang

Инструмент для анализа C-проектов. Работает на базе libclang. Извлекает полезную информацию из исходников: функции, переменные, типы, макросы и контекст.

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

### 🔧 На уровне проекта:
1. Перечислить все пользовательские типы данных (структуры, перечисления, typedef и т.д.)
2. Перечислить все файлы проекта
3. Подсчитать количество строк (всего / без комментариев / только функциональных)
4. Перечислить все define-ы (макросы)
5. Перечислить все глобальные, static и extern переменные
6. Перечислить все функции (глобальные и static отдельно)
7. Разделить define-ы на системные и пользовательские

### 📄 На уровне файла:
1. Перечислить все функции в файле
2. Перечислить все зависимости (#include)
3. Все переменные (глобальные, static, extern)
4. Все define-ы
5. Все пользовательские типы
6. Подсчёт строк (всего / только функциональных)
7. Диагностика кода (clang diagnostics)

### 🔁 На уровне функции:
1. Аргументы и локальные переменные
2. Имя, шапка, возвращаемый тип и значение
3. Используемые глобальные переменные
4. Вызовы других функций
5. Кол-во строк кода
6. Извлечение контекста для изолированной компиляции

## Установка

```bash
pip install parser-ci-AP
```

## Пример использования
```python
from parser_ci import Project
project = Project(Path(r"\path\to\c\project"))
for f in pr.global_functions:
    print(f.name)
```

## Структура проекта
```bash
parser-ci/
├── parser_ci_AP/
│   ├── __init__.py
│   ├── define_info.py
│   ├── errors_info.py
│   ├── function_info.py
│   ├── logger.py
│   ├── project.py
│   ├── project_file.py
│   ├── type_info.py
│   └── variable_info.py
├── README.md
├── setup.py
├── LICENSE
```
