Семмле

Платформа анализа английского кода

Семмле
Вид деятельностиДочерняя компания
ОснованДекабрь 2006 г. в Оксфорде , Англия. ( 2006-12 )
Штаб-квартираСан-Франциско, Калифорния, США
Основатель(и)Оге де Моор
Ключевые людиОге де Мур, Павел Августинов, Джулиан Тиббл
ПромышленностьАнализ программного обеспечения
ПродукцияПрограммное обеспечение и услуги по анализу кода
РодительGitHub [1] (2019–настоящее время)
URLsemmle.com [ мертвая ссылка ‍ ]

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

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

Корпоративный бэкграунд

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

Фон SemmleCode

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

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

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

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

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

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

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

из поля f где f.hasModifier("public") и не(f.hasModifier("final")) выберите f.getDeclaringType().getPackage(), f.getDeclaringType(), ф

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

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

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

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

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

Ссылки

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

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

  • Марк А. Линтон. Реализация реляционных представлений программ. В Питере Б. Хендерсоне, редакторе, Software Development Environments (SDE) , страницы 132–140, 1984.
  • Официальный сайт
Взято с "https://en.wikipedia.org/w/index.php?title=Semmle&oldid=1267845007"