セムレ

セムレ
事業の種類子会社
設立2006年12月、イギリスオックスフォード (2006-12
本部米国カリフォルニア州サンフランシスコ
創設者オエゲ・デ・ムーア
主要人物ウーゲ・デ・ムーア、パベル・アヴグスティノフ、ジュリアン・ティブル
業界ソフトウェア分析
製品コード解析ソフトウェアとサービス
GitHub [ 1 ] (2019年現在)
URLsemmle.com

Semmle Incはコード分析プラットフォームです。Semmle はGitHub ( Microsoftが所有)に2019 年 9 月 18 日に非公開の金額で買収されました。[ 2 ] Semmle の LGT​​M 技術は、コードレビューを自動化し、開発者の貢献を追跡し、ソフトウェアセキュリティの問題にフラグを立てます。[ 2 ] LGTM プラットフォームは、CodeQL クエリエンジン(旧 QL)[ 3 ]を活用して、ソフトウェアコードベースのセマンティック分析を実行します。GitHub は、Semmle の技術を統合して継続的な脆弱性検出サービスを提供することを目指しています。[ 4 ] 2019 年 11 月、CodeQL は研究およびオープンソースでの使用が無料になりました。[ 5 ] CodeQL は、 Datalogファミリーツリーから派生した.QL (ドット、クエル)と直接の系譜を共有しているか、同様の技術の進化形です。

SemmleCodeは、Semmleによって開発された演繹データベース用のオブジェクト指向クエリ言語です。このクラスの中では、再帰クエリをサポートしていることが特徴です。

企業背景

同社はサンフランシスコに本社を置き、開発拠点はイギリスのオックスフォード中心部、アルフレッド・ストリートのブルー・ボア・コートにあった。セムルの顧客には、クレディ・スイスNASAデルなどが含まれていた。[ 6 ]

SemmleCodeの背景

アカデミック

SemmleCodeは、ソフトウェアプログラムのソースに対するクエリに関する学術研究に基づいています。最初のシステムはLintonのOmegaシステム[ 7 ]で、クエリはQUELで表現されていました。QUELではクエリの再帰が許可されていなかったため、呼び出しグラフなどの階層的なプログラム構造を検査することが困難でした。そのため、次の重要な開発は、XL C++ブラウザでそのような再帰クエリを許可する論理プログラミングの使用でした。 [ 8 ]ただし、完全な論理プログラミング言語を使用する欠点は、許容できる効率を達成するのが非常に難しいことです。オックスフォード大学で開発されたCodeQuestシステム[ 9 ]は、論理プログラミングの非常に制限的なバージョンであるDatalogが表現力と効率の間のスイートスポットにあるという観察を活用した最初のシステムでした。QLクエリ言語は、Datalogのオブジェクト指向バージョンです。

産業

ソフトウェアプログラムのソースコードをクエリする初期の研究は、多くの産業用アプリケーションを生み出しました。特に、アプリケーションインテリジェンス(ソフトウェアシステムのソースコードからのデータマイニング)とソフトウェアリノベーションのためのシステムの基盤となりました。2007年、パリに拠点を置くCAST [ 10 ]はこの分野のマーケットリーダーの一社であり、イスラエルヘルツリーヤに拠点を置くBluePhoenixも重要な企業です。SemmleCodeは、オブジェクト指向クエリ言語を使用している点でこれらのシステムとは異なり、プログラマーが自身のプロジェクトに特化した新しいクエリを簡単に作成できます。

SemmleCodeの誕生に至るまでの学術的・産業的発展の詳細な説明は、Hajiyevらによる論文に記載されています。[ 11 ]

QLのサンプルクエリ

QLの使い方を説明するために、オブジェクト指向プログラミングにおけるよく知られたルール、「publicフィールドはfinal宣言する」を考えてみましょう。このルール違反を見つけるには、publicだがfinalではないフィールドを検索する必要があります。QLでは、この要件は次のように表現されます。

フィールドfから、f . hasModifier ( "public" )かつnot ( f . hasModifier ( "final" ))の場合、 f . getDeclaringType (). getPackage (), f . getDeclaringType (), fを選択します。

ここでは、問題のあるフィールドだけでなくf、その宣言が行われるパッケージと型も選択されます。

SemmleCodeと開発環境の統合

SemmleCodeは、 Eclipse IDEを介してJavaコード(ソースコードとバイトコードの両方)とXMLファイルのクエリを実行したり、QLクエリを編集したりするためのユーザーインターフェースを提供します。しかし、これはSemmleCodeの基盤となる技術の応用例の一つに過ぎません。QLは、他のあらゆる複雑なデータのクエリにも使用できます。

Microsoft/GitHubの傘下に入る過程で、元々のEclipseベースのワークフローはMicrosoftのVisual Studio Codeをベースにしたワークフローに置き換えられました。[ 3 ]

参照

参考文献

  1. ^ 「GitHubがSemmleを買収、開発者によるコードエクスプロイトの発見を支援」 venturebeat.com 2019年9月18日。 2019年9月20日閲覧
  2. ^ a b Lardinois, Frederic (2019年9月18日). 「GitHubがコード分析ツールSemmleを買収」 . techcrunch.com . TechCrunch . 2021年3月13日閲覧
  3. ^ a b「CodeQLの紹介」。semmle.com。Semmle 。2019年9月2021年3月13日閲覧「QL」製品とツールはCodeQLに名前が変更されました。以前は「QLスナップショット」と呼ばれていたものは、現在CodeQLデータベースです。
  4. ^ De Simone, Sergio (2019年9月19日). 「GitHub、継続的な脆弱性検出のためにSemmleコード分析を統合」 . infoq . InfoQ . 2021年3月13日閲覧
  5. ^ Krill, Paul (2019年11月15日). 「GitHub、CodeQLを研究およびオープンソース向けに無料化」 . infoworld.com . InfoWorld . 2021年3月13日閲覧
  6. ^ 「スピンアウト企業SemmleがAccel Partnersから800万ドルを調達」(プレスリリース)オックスフォード大学、2014年9月16日。 2015年9月18日閲覧
  7. ^ 「リントンのオメガシステム」アメリカ:カリフォルニア大学バークレー校。1983年。
  8. ^ Shahram Javey、Kin'ichi Mitsui、Hiroaki Nakamura、Tsuyoshi Ohira、Kazu Yasuda、Kase Kazushi Kuse、Tustomu Kamimura、Richard Helm. XL C++ブラウザのアーキテクチャ. CASCON '92: Proceedings of the 1992 conference of the Centre for Advanced Studies on Collaborative research、369–379ページ. IBM Press、1992年.
  9. ^ 「CodeQuestシステム」英国:オックスフォード大学コンピューティング研究所2006年10月9日時点のオリジナルよりアーカイブ
  10. ^ 「CASTソフトウェア」
  11. ^ Elnar Hajiyev、Mathieu Verbaere、Oege de Moor、「CodeQuest:Datalogによるスケーラブルなソースコードクエリ」、 ECOOP 2006 :2006年ヨーロッパオブジェクト指向プログラミング会議の議事録、2~27ページ。Springer、2006年。

さらに読む

  • マーク・A・リントン「プログラムのリレーショナルビューの実装」ピーター・B・ヘンダーソン編『ソフトウェア開発環境(SDE)』 132~140ページ、1984年。