Mantis Bug Tracker — это бесплатная веб- система отслеживания ошибок с открытым исходным кодом . Наиболее распространенное использование MantisBT — отслеживание дефектов программного обеспечения . Однако пользователи часто настраивают MantisBT как более общую систему отслеживания проблем и инструмент управления проектами .
Название Mantis и логотип проекта отсылают к семейству насекомых Mantidae , известному тем, что выслеживают и питаются другими насекомыми, в просторечии называемыми «жуками». Название проекта обычно сокращается до MantisBT или просто Mantis .
Кензабуро Ито начал разработку проекта отслеживания ошибок Mantis в 2000 году. В 2002 году к Кензабуро присоединились Йерун Латур, Виктор Боктор и Джулиан Фитцелл в качестве администраторов, и проект стал командным. [2] Версия 1.0.0 была выпущена в феврале 2006 года. [3] Версия 1.1.0 была выпущена в декабре 2007 года. [4] В ноябре 2008 года, после долгого обсуждения, [5] проект отказался [6] от использования Инструмент контроля версий Subversion для Git , распределенного инструмента контроля версий. В феврале 2010 года вышла версия 1.2.0. [7] В июле 2012 года организация MantisBT на GitHub стала официальным репозиторием исходного кода проекта. [8]
Система плагинов , управляемая событиями, была представлена с выпуском версии 1.2.0. [9] Эта система плагинов позволяет расширять MantisBT как с помощью официально поддерживаемых, так и сторонних плагинов. По состоянию на ноябрь 2013 года в организации MantisBT-plugins на GitHub доступно более 50 плагинов.
До версии 1.2.0 пользователям была доступна сторонняя система плагинов, созданная Винсентом Дебаутом, а также множество различных плагинов. [10] Эта система официально не поддерживается проектом MantisBT и несовместима с MantisBT 1.2.0 и более поздних версий.
MantisBT поддерживает отправку уведомлений по электронной почте при внесении изменений в проблемы в системе. Пользователи имеют возможность указать тип получаемых электронных писем и установить фильтры, чтобы определить минимальную серьезность проблем, о которых необходимо получать уведомления. Пользователи также имеют возможность явно подписаться на проблемы, которые их затрагивают.
RSS- каналы доступны для пользователей, которые хотят отслеживать решенные проблемы. Кроме того, MantisBT имеет интеграцию с Twitter через плагин, позволяющий отправлять уведомления в Твиттере, когда проблема решена.
С помощью системы подключаемых модулей MantisBT , управляемой событиями , можно расширить встроенную поддержку уведомлений для запуска расширенных сценариев, которые выполняют дополнительные действия по уведомлению (например, отправку SMS- сообщений или обновление статусов во внешних системах управления проектами ).
Версии MantisBT до 1.2.0 допускали ограниченную интеграцию с системой контроля версий CVS . [11] С появлением возможностей подключаемых модулей в MantisBT 1.2.0 интеграция контроля версий была переработана Amethyst Reese в подключаемом модуле SourceIntegration.
Первоначальная версия плагина SourceIntegration поддерживала GitHub , GitWeb, SourceForge и WebSVN. [12] Со временем были добавлены два дополнительных модуля, и по состоянию на ноябрь 2013 года интеграция исходного кода поддерживается для следующих инструментов контроля версий и веб- поставщиков:
После фиксации набора изменений в репозитории исходного кода можно настроить перехватчики после фиксации в Git или Subversion для автоматического уведомления MantisBT о внесении изменений в репозиторий. GitHub также способен удаленно уведомлять установку MantisBT об изменениях в репозитории исходного кода. Другой метод, используемый для интеграции MantisBT с поставщиками веб-хостинга исходного кода, — это использование планировщика заданий , такого как cron , для ручной проверки изменений в репозитории каждые несколько минут, сообщая о любых изменениях обратно в MantisBT. [12]
SourceIntegration позволяет автоматически решать проблемы в MantisBT, когда сообщение набора изменений содержит специальные строки, такие как «Fixes #12345», которые можно настроить с помощью регулярных выражений . Это также позволяет автоматически создавать связи между наборами изменений и соответствующими проблемами, записанными в MantisBT. В одном сообщении набора изменений можно указать несколько идентификаторов проблем , хотя обычно это не рекомендуется, поскольку это указывает на то, что набор изменений не имеет единой, четкой и логичной цели. [14]
В дополнение к функциям, упомянутым выше, MantisBT также поддерживает: [15]
MantisBT в основном написан на PHP и использует SQL для взаимодействия с базами данных. Веб- интерфейс пользователя MantisBT написан с использованием HTML , который стилизован и представлен с помощью CSS . [16] Пользовательский интерфейс также использует клиентскую библиотеку JavaScript jQuery для предоставления дополнительных функций, таких как динамическое содержимое страницы на основе Ajax и JSON .
Инструменты разработки и сценарии сборки написаны преимущественно на Python с некоторым добавлением сценариев Shell и PHP .
Кодовая база MantisBT восходит к тому времени, когда поддержка PHP принципов объектно-ориентированного программирования находилась в зачаточном состоянии. [17] Начиная с версии 1.2.0, большая часть кодовой базы MantisBT по-прежнему использует принципы процедурного программирования , однако некоторые разделы были преобразованы для использования новой объектной модели PHP 5. [18] [19]
Данные хранятся в системе управления реляционными базами данных с помощью библиотеки абстракции базы данных ADOdb . MantisBT поддерживает MySQL , MariaDB и PostgreSQL . Имеет экспериментальную поддержку Microsoft SQL и Oracle . [20]
MantisBT поддерживает путь обновления базы данных между версиями , постепенно изменяя схему базы данных . [21] Во время установки MantisBT изменения схемы базы данных воспроизводятся начиная с ранних версий MantisBT, чтобы достичь последнего состояния.
Для MantisBT требуется настроенный веб-сервер , интерпретатор языка программирования PHP и система управления реляционными базами данных , поддерживаемая MantisBT [11] и ADOdb . [22]
По состоянию на июнь 2022 года для стабильной ветки MantisBT требуется PHP 7.0 или более поздняя версия. [20]
Требуется несколько расширений PHP [11] для включения определенных функций или по соображениям производительности; расширение используемой СУБД (т. е. mysqli ) является обязательным.
MantisBT объединяет в себе ряд зависимостей с каждым выпуском, включая: [23]
Для построения графиков взаимосвязей между задачами требуется GraphViz . MantisBT также имеет альтернативную зависимость от коммерческой графической библиотеки JpGraph для построения статистики.