静的解析に機械学習を使用する方法

静的解析に機械学習を使用する方法

機械学習と人工知能は、特にマーケティング分析とサイバーセキュリティの分野で多くの分野で広く応用されている 2 つのテクノロジーであり、これらの分野での応用が成功したことから、あらゆることにそれらを利用しようとする人もいます。これには、機械学習システムを使用して、セキュリティの脆弱性を見つけるための静的コード アナライザーを作成することが含まれます。

[[360128]]

これらの試みのいくつかはある程度成功しており、Facebook、Amazon、Mozilla はすべて、何らかの形で機械学習を活用した静的コード アナライザーを提供しています。しかし、機械学習の基礎を理解している人なら誰でも知っているように、これらの方法にもいくつかの固有の制限があります。

機械学習静的アナライザー

過去数年間で、機械学習を活用した静的解析ツールが市場に急増しました。熱心なアマチュアによって開発されたものもあれば、テクノロジーの巨人によって開発されたものもあります。Facebook、Amazon、Mozilla は現在、そのようなツールを提供しており、リリースごとに開発プロセスに革命を起こすと約束しています。

実際、これらのツールは、開発者が脆弱性やバグを探す時間を節約します。市場で主流となっている機械学習静的アナライザーをいくつか見てみましょう。

1. ディープコード

DeepCode はおそらく、Java、JavaScript、Python の最も有名な脆弱性ハンターです。 DeepCode は、開発者が「開発者のための文法」と呼ぶ機械学習モジュールも提供しています。

DeepCode の機械学習モジュールは、開発者が多数のプロジェクトに取り組む際に行う多数の変更を調べることで機能します。 DeepCode は学習するにつれて、開発者が解決しようとしている問題に対する解決策を提案し、以前に発生した間違いを検出できるようになります。

DeepCode にはまだいくつかの制限があります。システムの開発者は、C++ 言語のサポートは 2018 年から利用可能になり、開発者はプラグインを通じて C++ と DeepCode を使用できるようになると主張しています。

2.推測する

Infer は 10 年近く前から存在しており、機械学習の原理に基づく静的コード アナライザーの基盤として 2013 年に Facebook に買収されました。 Infer は、幅広い言語をサポートし、AWS や Oculus と組み合わせて使用​​できるなど、さまざまな理由から静的アナライザーとして非常に人気が高まっています。最も重要なのは、プロジェクトのソースコードが 2015 年にオープンソース化されたことで、プロジェクトの急速な開発が可能になったことです。

その人気にもかかわらず、Infer を使用する開発者は、Facebook プロジェクトであっても、生成される警告の 80% しか役に立たないことを認めています。ポインター逆参照やメモリ リーク エラーは検出されますが、型変換例外や検証されていないデータ リークなど、Infer では検出できないエラーのクラスがまだあります。

3.ソース{d}

Source{d} はオープンソースの静的コード アナライザーおよび開発マネージャーであり、特定のソフトウェア プロジェクトの進捗状況に関する情報をマネージャーに提供することを目指すだけでなく、開発者向けの多くのツールも提供します。静的アプリケーション セキュリティ テスト プロトコルの一部として、バイトコードやバイナリ、アプリケーション ソース コードの脆弱性の分析など、さまざまな便利な SAST 機能を実行できます。

このソフトウェアの主な利点の 1 つは、ソース コードが完全に透明で GitHub リポジトリで利用できるため、開発者が基本的に独自の機械学習強化コード アナライザーを構築できることです。

そうは言っても、Source{d} はコード エラーの分離に非常に限界があります。 Babelfish サービスを使用して特定のコード インスタンスを共通の構文ツリーに変換し、そこからコードを簡素化して編集を提案し、作業を容易にします。これにより、開発者はコードを操作する時間を大幅に節約できますが、完全な静的アナライザーではありません。

その他の静的解析ツール

これら 3 つのソリューションに加えて、将来有望な新しい静的アナライザーもいくつか登場しています。 Clever-commit は Mozilla Corporation のプロジェクトですが、詳細はまだ不明です。 CodeGuru は Amazon の機械学習強化型静的コード アナライザーですが、現在は Java でのみ動作します。 Embold は、コードの依存関係を視覚化するエラー分析用のスタートアップ プラットフォームですが、使用できる言語も限られています。

これらのシステムはすべて開発者にとって非常に便利ですが、特定の言語と組み合わせて使用​​し、特定の結果を達成するようにトレーニングされている場合に限られます。言い換えれば、機械学習対応の静的コードアナライザー(さまざまな言語や環境でバグや障害を検出できる多目的ツール)の期待は、まだ実現されていないということです。

開発愛好家は、これは単に機械学習駆動型の静的アナライザーがまださらなる開発を必要としているからだと言うでしょう。しかし、機械学習システムが実際にどのように機能するかを再考すると、これらの問題はしばらく続く可能性があることが示唆されます。

結論は

最後に、人々は理解する必要があります。機械学習技術はまだ初期段階にあり、多くの開発分野で多くの有用な応用が見込まれる。しかし、機械学習テクノロジーが静的解析ツールの構築方法を変えることは依然として難しいことを理解することが重要です。

最も基本的なレベルでは、静的分析と機械学習プラットフォームは根本的に異なるためです。 AI や機械学習システムを実行するために使用されるあいまいな確率的ロジックとは異なり、エラーの分離と修復には正確で繰り返し可能な方法が必要です。結局のところ、人々は静的アナライザーが他の例に基づいてコードが間違っている可能性があることを指摘することを望んでおらず、それが機能するかどうかを確実に知りたいのです。

残念ながら、この確実性は、明示的にコード化されたアナライザーでのみ達成できます。少なくとも今のところはそうです。

<<:  遠隔ギフト配達、ライトショー…ドローンはクリスマスの新たな人気になりつつあります!

>>:  ハイテクロボット: すでに世界に存在する 5 つの驚くべきハイテクロボット

ブログ    

推薦する

1 週間で機械学習を始めることは信頼できるでしょうか?詳しい学習スケジュールはこちら

[[185648]]原著者 | ペル・ハラルド・ボルゲン編集:魏子民、頼暁娟、張立軍 「初心者にとっ...

Mambaはこのように使用できます。バイトをトークンに分割せずに効率的に学習します。

言語モデルを定義するときは通常、基本的な単語分割方法を使用して文を単語、サブワード、または文字に分割...

...

MetaGPT AIモデルオープンソース:ソフトウェア会社の開発プロセスをシミュレートし、高品質のコードを生成できます

7月4日、コード生成に重点を置いたAIモデルとしてMetaGPTが発表された。名前は似ているが、Me...

雲智盛 梁 嘉恩: インテリジェントインタラクション技術とモノのインターネットアプリケーション

[51CTO.comより引用] 2017年7月21日から22日まで、51CTO主催の人工知能をテーマ...

機械学習プロジェクトの完全な構築プロセスとタスクリストが公開されており、収集する価値があります。

機械学習プロジェクトの作成というと、データ、モデリング、テストなどを思い浮かべる人がほとんどですが、...

あなたは知っていますか?注文するテイクアウトはすべて、ディープラーニングとの美しい出会いです

[[196940]]多くの学生は、フードデリバリーはオンラインで注文し、オフラインで配達するビジネス...

WOTカンファレンスは11月に深センで開催されます!テクノロジー界の「トップグループチャット」をお見逃しなく

数日前に話題になった「中国ビッグモデル「トップストリームグループチャット」ノート」を見た人は多いはず...

...

GoogleはGoogleアシスタントを生成AIでアップデートする予定

8月1日、海外メディアは、Axiosの報道によると、GoogleはGoogleアシスタントを生成AI...

...

Microsoft のエンジニアが PyTorch を使用してグラフ アテンション ネットワークを実装し、驚くべき視覚効果を実現

最近、グラフアテンションネットワークの視覚化に関するプロジェクトが多くの研究者の関心を集めており、開...

適切な AI データ ストレージを選択するための 6 つの考慮事項

間違ったストレージ AI プラットフォームを採用すると深刻な影響が生じる可能性があるため、製品の選択...

生成AIの可能性を活用してビジネスの成功を推進する

絶えず進化するデジタル環境において、「人工知能」(AI)という用語はもはや馴染みのない概念ではありま...

...