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