Mantis Bug Tracker — это бесплатная и открытая веб- система отслеживания ошибок . Наиболее распространенное применение MantisBT — отслеживание дефектов программного обеспечения . Однако пользователи часто настраивают MantisBT в качестве более общей системы отслеживания проблем и инструмента управления проектами .
Название Mantis и логотип проекта отсылают к семейству насекомых Mantidae , известных тем, что выслеживают и питаются другими насекомыми, в просторечии именуемыми «жуками». Название проекта обычно сокращается до MantisBT или просто Mantis .
Кэндзабуро Ито начал разработку проекта Mantis Bug Tracking в 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 через плагин, что позволяет отправлять уведомления в Twitter, когда проблема решена.
С помощью системы подключаемых модулей MantisBT, управляемой событиями , можно расширить встроенную поддержку уведомлений для запуска расширенных скриптов, которые выполняют дополнительные действия по уведомлению (например, отправку SMS- сообщений или обновление статусов во внешних системах управления проектами ).
Версии MantisBT до 1.2.0 допускали ограниченную интеграцию с системой контроля версий CVS . [11] С появлением возможностей плагинов в MantisBT 1.2.0 интеграция контроля версий была переработана Аметист Риз в плагине SourceIntegration.
Первоначальный выпуск плагина SourceIntegration поддерживал GitHub , GitWeb, SourceForge и WebSVN. [12] Со временем были добавлены два дополнительных модуля, и по состоянию на ноябрь 2013 года интеграция исходного кода поддерживается для следующих инструментов контроля версий и веб- провайдеров:
После фиксации наборов изменений в репозитории исходного кода, посткоммитные хуки в Git или Subversion могут быть настроены на автоматическое уведомление MantisBT о внесении изменений в репозиторий. GitHub также способен удаленно уведомлять установку MantisBT об изменениях в репозитории исходного кода. Другой метод, используемый для интеграции MantisBT с поставщиками веб-хостинга исходного кода, — это использование планировщика заданий , такого как cron, для ручной проверки изменений в репозитории каждые несколько минут, сообщая обо всех изменениях обратно в MantisBT. [12]
SourceIntegration позволяет автоматически решать проблемы в MantisBT, когда сообщение о наборе изменений содержит специальные строки, такие как «Исправления #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 для построения графиков статистики.