Тип бизнеса | Дочернее предприятие |
---|---|
Основан | Декабрь 2006 года в Оксфорде , Англия . |
Штаб-квартира | Сан-Франциско, Калифорния, США |
Основатель (и) | Оге де Мур |
Ключевые люди | Оге де Моор, Павел Аугустинов, Джулиан Тиббл |
Промышленность | Анализ программного обеспечения |
Продукты | Программное обеспечение и услуги для анализа кода |
Родитель | GitHub [1] (2019 – настоящее время) |
URL-адрес | semmle.com |
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 основан на академических исследованиях по поиску источника программного обеспечения. Первой такой системой была система Omega Линтона [8] , в которой запросы формулировались в QUEL . QUEL не допускал рекурсии в запросах, что затрудняло проверку иерархических структур программы, таких как граф вызовов . Таким образом, следующим значительным достижением стало использование логического программирования , позволяющего такие рекурсивные запросы, в браузере XL C++. [9] Недостатком использования языка программирования с полной логикой является то, что очень трудно достичь приемлемой эффективности. Система CodeQuest [10] , разработанная в Оксфордском университете., был первым, кто использовал наблюдение, что Datalog , очень ограничительная версия логического программирования, находится в золотой середине между выразительной силой и эффективностью. Язык запросов QL представляет собой объектно-ориентированную версию Datalog.
Ранние исследовательские работы по поиску источника программного обеспечения породили ряд промышленных приложений. В частности, он стал краеугольным камнем систем прикладного интеллекта (интеллектуального анализа данных об исходных кодах программных систем) и обновления программного обеспечения. В 2007 году парижская компания CAST [11] стала одним из лидеров рынка в этой области, а среди других значительных игроков была компания BluePhoenix в Герцлии , Израиль . SemmleCode отличается от этих систем использованием объектно-ориентированного языка запросов, который позволяет программистам легко формулировать новые запросы, характерные для их собственного проекта.
Полный отчет об академических и промышленных разработках, приведших к созданию SemmleCode, можно найти в статье Hajiyev et al. [12]
Чтобы проиллюстрировать использование QL, рассмотрим известное правило объектно-ориентированного программирования , согласно которому открытые поля должны быть объявлены как final. Чтобы найти нарушения этого правила, мы должны искать поля, которые являются общедоступными, но не окончательными. В QL это требование выражается следующим образом:
из поля f, где f . hasModifier ( "public" ) и not ( f . hasModifier ( "final" )) select f . получить тип объявления (). получить пакет (), f . getDeclaringType (), f
Здесь выбирается не только оскорбительное поле f
, но также пакет и тип, в котором происходит его объявление.
SemmleCode предоставляет пользовательский интерфейс через Eclipse IDE для запроса кода Java (как исходного кода, так и байт-кода), а также файлов XML и редактирования запросов QL. Однако это всего лишь одно из применений лежащей в ее основе технологии: QL можно использовать для запроса сложных данных любого другого типа.
В рамках интеграции в корпоративный дом Microsoft/GitHub исходный рабочий процесс на основе Eclipse был заменен рабочим процессом, основанным на Visual Studio Code от Microsoft . [4]
продукт и инструменты «QL» были переименованы в CodeQL… то, что ранее называлось «моментальным снимком QL», теперь является базой данных CodeQL.