Coccinelle (программное обеспечение) - Coccinelle (software)

Coccinelle
Стабильный выпуск
1.0.8[1] / 25 сентября 2019 г.; 13 месяцев назад (2019-09-25)
Репозиторий Отредактируйте это в Викиданных
Написано вOCaml и Python
ТипСтатический анализ программы
ЛицензияGPLv2
Интернет сайткокцинель.gitlabpages.inria.fr/интернет сайт/

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)

Рекомендации

  1. ^ "Coccinelle: Инструмент сопоставления программ и преобразования системного кода". coccinelle.gitlabpages.inria.fr. Получено 2020-08-28.
  2. ^ Паликс, Николас; Лавол, Джулия; Мюллер, Жиль (2010). "Отслеживание шаблонов кода в нескольких версиях программного обеспечения с помощью Herodotos" (PDF). Материалы 9-й Международной конференции по аспектно-ориентированной разработке программного обеспечения. ACM: 169–180. Дои:10.1145/1739230.1739250.
  3. ^ Николас Паликс. "Николас Паликс: Геродот".
  4. ^ Падиоло, Йоанн; Лавол, Джулия; Мюллер, Жиль (2007). «Семантические исправления, документирование и автоматизация развития сопутствующих материалов в драйверах устройств Linux» (PDF). coccinelle.gitlabpages.inria.fr. Получено 2020-08-29.
  5. ^ Валери Хенсон (20 января 2009 г.). «Семантическое исправление с помощью Coccinelle». Еженедельные новости Linux. Получено 2011-04-25.
  6. ^ Вольфрам Санг (30 марта 2010 г.). «Эволюционное развитие семантического пластыря с помощью Coccinelle». Еженедельные новости Linux. Получено 2011-04-25.

внешняя ссылка