Coccinelle (программное обеспечение) - Coccinelle (software)
Стабильный выпуск | 1.0.8[1] / 25 сентября 2019 г. |
---|---|
Репозиторий | |
Написано в | OCaml и Python |
Тип | Статический анализ программы |
Лицензия | GPLv2 |
Интернет сайт | кокцинель |
Coccinelle (Французский за божья коровка) является Открытый исходный код утилита для сопоставления и преобразование то исходный код программ, написанных в C язык программирования.
Полезность
Первоначально кокчинель использовалась для помощи в развитии Ядро Linux, обеспечивая поддержку изменений в библиотеке интерфейсы прикладного программирования (API), например, переименование функция, добавив аргумент функции, значение которого так или иначе зависит от контекста, и реорганизуя структура данных.
Его также можно использовать для поиска дефектных шаблонов программирования в коде (т. Е. Фрагментов кода, которые ошибочны с высокой вероятностью, таких как возможное разыменование указателя NULL) без их преобразования. потом кокцинельроль близка к роли статический анализ инструменты. Примеры такого использования представлены приложениями Herodotos инструмент, который отслеживает предупреждения, генерируемые кокцинель.[2][3]
Поддержка Coccinelle осуществляется ИРИЛЛ. Финансирование разработки было предоставлено Agence Nationale de la Recherche (Франция), Датский исследовательский совет по технологиям и производственным наукам и INRIA.
Исходный код Coccinelle лицензирован в соответствии с условиями версии 2 Стандартная общественная лицензия GNU (GPL).
Семантический язык патчей
Исходный код, который должен быть сопоставлен или заменен, указывается с использованием синтаксиса «семантического исправления» на основе пластырь синтаксис.[4] В Семантический язык патчей (SmPL) узор напоминает унифицированная разница с C-подобными объявлениями.[5][6]
Пример
@@блокировка выражения, флаги; выражение urb;@@ spin_lock_irqsave (блокировка, флаги); <...- usb_submit_urb (urb)+ usb_submit_urb (urb, GFP_ATOMIC) ...> spin_unlock_irqrestore (блокировка, флаги);@@выражение urb;@@- usb_submit_urb (urb)+ usb_submit_urb (urb, GFP_KERNEL)
Рекомендации
- ^ "Coccinelle: Инструмент сопоставления программ и преобразования системного кода". coccinelle.gitlabpages.inria.fr. Получено 2020-08-28.
- ^ Паликс, Николас; Лавол, Джулия; Мюллер, Жиль (2010). "Отслеживание шаблонов кода в нескольких версиях программного обеспечения с помощью Herodotos" (PDF). Материалы 9-й Международной конференции по аспектно-ориентированной разработке программного обеспечения. ACM: 169–180. Дои:10.1145/1739230.1739250.
- ^ Николас Паликс. "Николас Паликс: Геродот".
- ^ Падиоло, Йоанн; Лавол, Джулия; Мюллер, Жиль (2007). «Семантические исправления, документирование и автоматизация развития сопутствующих материалов в драйверах устройств Linux» (PDF). coccinelle.gitlabpages.inria.fr. Получено 2020-08-29.
- ^ Валери Хенсон (20 января 2009 г.). «Семантическое исправление с помощью Coccinelle». Еженедельные новости Linux. Получено 2011-04-25.
- ^ Вольфрам Санг (30 марта 2010 г.). «Эволюционное развитие семантического пластыря с помощью Coccinelle». Еженедельные новости Linux. Получено 2011-04-25.