В рамках проекта ART развивается набор программных средств для автоматизированного поиска ошибок, связанных с использованием ресурсов в прикладных программах и ядрах ОС. В настоящее время поддерживается трассировка программ на языке Си. Язык описания ресурсов допускает отслеживание широкого спектра ресурсов, таких как память, разнообразные дескрипторы и произвольные структуры.
Список возможностей:
- Обнаружение многократного освобождения ресурса;
- Обнаружение утечек ресурсов;
- Обнаружение ситуации когда функция захвата возвращает уже захваченный ресурс;
- Обнаружение использования незахваченного ресурса;
- Обнаружение использования ресурса после освобождения;
- Обнаружение освобождения неиспользованного ресурса;
- Обнаружение использования ошибочного (NULL для памяти, -1 для дескрипторов, ...) ресурса;
- Обнаружение использования "дикого" ресурса;
- Обнаружение освобождения ошибочного ресурса;
- Обнаружение захвата памяти нулевого размера (malloc(), calloc(), realloc());
- Обнаружение попытки перераспределения "дикой" памяти;
- Обнаружение перезахвата такого же объёма (эффективность).
Для загрузки доступны двоичные сборки под GNU/Linux и FreeBSD. Проекту требуется тестирование, описание ресурсов (сейчас в примерах есть несколько функций для работы с памятью, несколько функций по работе с "FILE*"), конструктивная критика, комментарии.