Сэммле


Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

Semmle Inc — это платформа анализа кода с офисами в Сан-Франциско , Сиэтле , Нью-Йорке , Оксфорде , Валенсии и Копенгагене . [2] Semmle была приобретена GitHub (которая сама принадлежит Microsoft ) 18 сентября 2019 года за нераскрытую сумму. [3] Технология Semmle LGTM автоматизирует проверку кода , отслеживает вклад разработчиков и отмечает проблемы с безопасностью программного обеспечения . [3] Платформа LGTM использует механизм запросов CodeQL (ранее QL) [4]выполнять семантический анализ кодовых баз программного обеспечения. GitHub стремится интегрировать технологию Semmle для предоставления услуг непрерывного обнаружения уязвимостей. [5] В ноябре 2019 года использование CodeQL стало бесплатным для исследований и открытого исходного кода. [6] CodeQL либо имеет прямую родословную с .QL (dot-que-ell), который происходит от генеалогического дерева Datalog , либо является развитием аналогичной технологии. [ требуется уточнение ]

SemmleCode — это объектно-ориентированный язык запросов для дедуктивных баз данных , разработанный Semmle. В этом классе он отличается поддержкой рекурсивных запросов.

Корпоративный фон

Штаб-квартира компании находится в Сан-Франциско , а ее деятельность по разработке базируется в Blue Boar Court, Alfred Street , в центре Оксфорда , Англия . В число клиентов Semmle входят Credit Suisse , NASA и Dell . [7]

Фон SemmleCode

Академический

SemmleCode основан на академических исследованиях по поиску источника программного обеспечения. Первой такой системой была система Omega Линтона [8] , в которой запросы формулировались в QUEL . QUEL не допускал рекурсии в запросах, что затрудняло проверку иерархических структур программы, таких как граф вызовов . Таким образом, следующим значительным достижением стало использование логического программирования , позволяющего такие рекурсивные запросы, в браузере XL C++. [9] Недостатком использования языка программирования с полной логикой является то, что очень трудно достичь приемлемой эффективности. Система CodeQuest [10] , разработанная в Оксфордском университете., был первым, кто использовал наблюдение, что Datalog , очень ограничительная версия логического программирования, находится в золотой середине между выразительной силой и эффективностью. Язык запросов QL представляет собой объектно-ориентированную версию Datalog.

промышленный

Ранние исследовательские работы по поиску источника программного обеспечения породили ряд промышленных приложений. В частности, он стал краеугольным камнем систем прикладного интеллекта (интеллектуального анализа данных об исходных кодах программных систем) и обновления программного обеспечения. В 2007 году парижская компания CAST [11] стала одним из лидеров рынка в этой области, а среди других значительных игроков была компания BluePhoenix в Герцлии , Израиль . SemmleCode отличается от этих систем использованием объектно-ориентированного языка запросов, который позволяет программистам легко формулировать новые запросы, характерные для их собственного проекта.

Полный отчет об академических и промышленных разработках, приведших к созданию SemmleCode, можно найти в статье Hajiyev et al. [12]

Пример запроса в QL

Чтобы проиллюстрировать использование QL, рассмотрим известное правило объектно-ориентированного программирования , согласно которому открытые поля должны быть объявлены как final. Чтобы найти нарушения этого правила, мы должны искать поля, которые являются общедоступными, но не окончательными. В QL это требование выражается следующим образом:

 из  поля  f,  где  f . hasModifier ( "public" )  и  not ( f . hasModifier ( "final" ))  select  f . получить тип объявления (). получить пакет (),  f . getDeclaringType (),  f

Здесь выбирается не только оскорбительное поле f, но также пакет и тип, в котором происходит его объявление.

Интеграция SemmleCode со средами разработки

SemmleCode предоставляет пользовательский интерфейс через Eclipse IDE для запроса кода Java (как исходного кода, так и байт-кода), а также файлов XML и редактирования запросов QL. Однако это всего лишь одно из применений лежащей в ее основе технологии: QL можно использовать для запроса сложных данных любого другого типа.

В рамках интеграции в корпоративный дом Microsoft/GitHub исходный рабочий процесс на основе Eclipse был заменен рабочим процессом, основанным на Visual Studio Code от Microsoft . [4]

Смотрите также

  • Список инструментов для статического анализа кода
  • .QL
  • Журнал данных

использованная литература

  1. ^ «GitHub приобретает Semmle, чтобы помочь разработчикам обнаруживать эксплойты в коде» . www.venturebeat.com . Проверено 20 сентября 2019 г.
  2. ^ «Свяжитесь с нами» . Сэммле .
  3. ↑ a b Лардинуа , Фредерик (18 сентября 2019 г.). «GitHub приобретает инструмент для анализа кода Semmle» . techcrunch.com . ТехКранч . Проверено 13 марта 2021 г.
  4. ^ а б «Введение в CodeQL» . semmle.com . Сэммле. Сентябрь 2019 . Проверено 13 марта 2021 г. продукт и инструменты «QL» были переименованы в CodeQL… то, что ранее называлось «моментальным снимком QL», теперь является базой данных CodeQL.
  5. Де Симоне, Серджио (19 сентября 2019 г.). «GitHub интегрирует анализ кода Semmle для непрерывного обнаружения уязвимостей» . информация . Информация . Проверено 13 марта 2021 г.
  6. Криль, Пол (15 ноября 2019 г.). «GitHub делает CodeQL бесплатным для исследований и с открытым исходным кодом» . infoworld.com . ИнфоМир . Проверено 13 марта 2021 г.
  7. ^ «Дополнительная компания Semmle получает 8 миллионов долларов от Accel Partners» (пресс-релиз). Оксфордский университет. 16 сентября 2014 г. . Проверено 18 сентября 2015 г.
  8. ^ "Система Омега Линтона" . США: Калифорнийский университет, Беркли . 1983.
  9. ↑ Шахрам Джавей , Киничи Мицуи, Хироаки Накамура, Цуёси Охира, Кадзу Ясуда, Казуши Кусе, Цутому Камимура и Ричард Хелм. Архитектура браузера XL C++ . В CASCON '92: Материалы конференции 1992 года Центра перспективных исследований по совместным исследованиям , страницы 369–379. IBM Press, 1992.
  10. ^ "Система CodeQuest" . Великобритания: Вычислительная лаборатория Оксфордского университета . Архивировано из оригинала 9 октября 2006 г.
  11. Викискладе есть медиафайлы по теме CAST .
  12. ^ Эльнар Хаджиев, Матье Вербер и Оге де Мур, CodeQuest: Масштабируемые запросы исходного кода с Datalog. В ECOOP 2006: Материалы Европейской конференции по объектно-ориентированному программированию 2006 г., страницы 2–27. Спрингер , 2006.

дальнейшее чтение

  • Марк А. Линтон. Реализация реляционных представлений программ. Питер Б. Хендерсон, редактор, Software Development Environments (SDE) , страницы 132–140, 1984.

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

  • Официальный сайт
Получено с " https://en.wikipedia.org/w/index.php?title=Semmle&oldid=1059218691 "