---
category: ru
hastr: true
layout: project
title: Report a Bug
short: reportabug
tags: qt, c++, библиотека, разработка
hasgui: false
hasdocs: true
developers:
- Evgeniy Alekseev
license: LGPLv3
links:
---
## Информация
Приложение/библиотека, написанное на Qt, которое позволяет пользователям отправлять багрепорт для проектов, расположенных на GitHub. Оно может работать как через [GitHub](//github.com "GitHub"), так и через [GitReports](//gitreports.com "GitReports"). Работает нормально, однако данное приложение было создано as proof-of-concept.
### Разработчики
{% for devel in page.developers %}
* {{ devel }}{% endfor %}
### Лицензия
* {{ page.license }}
## Установка
### Инструкция
### Сборка, как отдельное приложение
* Скачайте [архив](//github.com/arcan1s/reportabug/releases "GitHub") с актуальной версией исходных файлов.
* Извлеките из него файлы и настройте под себя.
* Установите приложение:
```bash
cd /path/to/extracted/archive
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_AS_LIBRARY:BOOL=0 ../
make
sudo make install
```
### Сборка, как библиотека в проекте
* Скачайте [архив](//github.com/arcan1s/reportabug/releases "GitHub") с актуальной версией исходных файлов.
* Извлеките из него файлы и настройте под себя.
* Включите библиотеку в Ваш проект. Например, если Вы используете `cmake`:
```cmake
add_subdirectory (reportabug)
```
* Объявите класс в Вашем приложении, например:
```cpp
Reportabug *reportWindow = new Reportabug(parent=this, debugCmd=false, params=0);
reportWindow->showWindow();
```
* Слинкуйте Ваше приложение с библиотекой.
### Доступные флаги cmake
* `-DBUILD_AS_LIBRARY=0` - собирать отдельное приложение, а не библиотеку.
* `-DBUILD_DOCS=1` - собирать документацию для разработчиков.
* `-DBUILD_SHARED_LIBRARY=1` - собирать библиотеку общего доступа, а не статическую.
* `-DENABLE_GITHUB=0` - отключить модуль GitHub.
* `-DENABLE_GITREPORT=0` - отключить модуль GitReports
* `-DOWN_GITHUB_TOKEN=STRING` - использовать STRING, как свой GitHub токен.
* `-DUSE_QT5=0` - использовать Qt4 вместо Qt5.
### Зависимости
Все было протестировано на последних версиях зависимостей.
* qt5-base *(если используется Qt5)* **или** qt4 *(если используется Qt4)*
* qt5-network (если используется Qt5)
* automoc4 *(make)*
* cmake *(make)*
* doxygen *(make, документация)*
* qt5-webkit (если используется Qt5) **или** qtwebkit (если используется Qt4) *(опционально, требуется для модуля GitReports)*
## Использование
### Модуль GitHub
Данный модуль создает тикет, используя [GitHub API](//developer.github.com/v3/issues/ "Документация"). Данный модуль требует авторизации пользователя. Типичный POST запрос выглядит так:
```bash
curl -X POST -u user:pass -d '{"title":"A new bug","body":"Some error occurs"}' \
//api.github.com/repos/owner/repo/issues
```
Для того, чтобы отключить данный модуль, используйте `-DENABLE_GITHUB=0` флаг cmake.
Также данный модуль может отправлять запросы, используя токен разработчика. Пожалуйста, посетите [данную страницу](//github.com/settings/applications "Настройки") и сгенерируйте токен. Требуемые права для токена - **public_repo** (или **repo**, если Вы используете для приватных репозиториев).
**Имейте в виду, что передача токена в открытом виде может скомпрометировать его!**
Типичный POST запрос выглядит так:
```bash
curl -X POST -H "Authorization: token token" -d '{"title":"A new bug","body":"Some error occurs"}' \
//api.github.com/repos/owner/repo/issues
```
Для того, чтобы включить данный модуль, используйте `-DOWN_GITHUB_TOKEN=STRING` флаг cmake.
Данный модуль требует наличия в системе `QtNetwork`.
### Модуль GitReports
Данный модуль создает тикет, используя возможности [GitReports](//gitreports.com/about "GitReports"). Пожалуйста, посетите [данную страницу](//gitreports.com/ "GitReports") и настройте под Ваши репозитории.
Для того, чтобы отключить данный модуль, используйте `-DENABLE_GITREPORT=0` флаг cmake. Данный модуль требует наличия в системе `QtNetwork` и `QtWebKit`.
## Настройка
Для настройки перед компиляцией отредактируйте хидер `src/config.h`. Также Вы можете подгрузить параметры автоматически, используя массив `params` (необходимые ключи такие же, как и для хидера).
### Основные настройки
* `OWNER` - владелец репозитория.
* `PROJECT` - имя проекта.
* `TAG_BODY` - тело тикета по умолчанию. Может быть использовано в обоих модулях.
* `TAG_TITLE` - имя тикета по умолчанию. Может быть использовано только в модуле GitHub.
* `TAG_ASSIGNEE` - прикрепить тикет к данному аккаунту. Может быть использовано только в модуле GitHub. Данный тег будет работать, только если пользователь имеет права на запись. Если будет пустым, будет проигнорировано.
* `TAG_LABELS` - установить данные метки тикету. Метки должны быть разделены запятыми. Может быть использовано только в модуле GitHub. Данный тег будет работать, только если пользователь имеет права на запись. Если будет пустым, будет проигнорировано.
* `TAG_MILESTONE` - установить данную веху тикету. Может быть использовано только в модуле GitHub. Данный тег будет работать, только если пользователь имеет права на запись. Если будет пустым, будет проигнорировано.
### Настройки модуля GitHub
* `GITHUB_COMBOBOX` - текст модуля в ComboBox.
* `ISSUES_URL` - URL, в большинстве случаев, не редактируйте его. По умолчанию `//api.github.com/repos/$OWNER/$PROJECT/issues`. Доступные теги `$PROJECT`, `$OWNER`.
### Настройки модуля GitReports
* `CAPTCHA_URL` - URL капчи, в большинстве случаев, не редактируйте его. По умолчанию `//gitreports.com/simple_captcha?code=`.
* `GITREPORT_COMBOBOX` - текст модуля в ComboBox.
* `PUBLIC_URL` - URL, в большинстве случаев, не редактируйте его. По умолчанию `//gitreports.com/issue/$OWNER/$PROJECT`. Доступные теги `$PROJECT`, `$OWNER`.