Intelが発表 広告を通じて ControlFlag研究プロジェクトに関連する開発、 これは、コードの品質を向上させるための機械学習システムを作成することを目的としています。
ツールはMITライセンスの下でリリースされました そして、大量の既存のコードでトレーニングされたモデルに基づいて、C / C ++などの高級言語で書かれたソーステキストのさまざまなエラーや異常を識別できることで際立っています。
システム コード内のさまざまなタイプの問題を検出するのに適しています。 誤植や誤った型の組み合わせの検出から、ポインター内のnull値の欠落したチェックの特定やメモリの問題まで。
システムは、統計モデルを構築することによってそれ自体で学習します GitHubおよび同様の公開リポジトリで公開されているオープンソースコードの既存の配列から。 トレーニング段階では、システムが一般的なテンプレートを決定します コード内に構造を構築し、プログラム内のコード実行のフローを反映して、これらのテンプレート間の接続の構文ツリーを構築します。 その結果、分析されたすべてのソーステキストの開発経験を組み合わせた参照決定木が形成されます。
ControlFlagをより幅広いソフトウェア開発コミュニティで利用できるようにするために、IntelはControlFlagがオープンソースになり、https://github.com/IntelLabs/control-flagでアクセスできるようになったことをお知らせします。 開発者がそれを開発し、この非常に価値のある革新的なテクノロジーで他に何ができるかを確認する機会を提供できることを嬉しく思います。
ControlFlagは、その導入以来、実稼働レベルのソフトウェアおよび広く使用されているオープンソースソフトウェアシステムでテストされてきました。 たとえば、昨年、ControlFlagは、クライアントURL(cURL)のコード異常を特定しました。これは、さまざまなネットワークプロトコルを使用してXNUMX日にXNUMX億回以上データを転送するコンピューターソフトウェアプロジェクトです。 異常をcURLチームに報告した後、彼らはControlFlagの調査結果に同意し、その後コードにパッチを適用しました。
パターンを定義する同様のプロセスが、テスト対象のコードに対して実行されます、参照決定木と比較されます。 隣接するブランチとの大きな不一致は、検証中のパターンに異常があることを示しています。 このシステムでは、テンプレートのエラーを特定できるだけでなく、解決策を提案することもできます。 たとえば、コードスニペット「if(x = 7)y = x;」を解析する場合システムは、数値を比較するためにステートメント「if」で構文「variable == number」が一般的に使用されると判断したため、ステートメント「if」の「variable = number」の表示はおそらく誤植が原因です。
従来の静的アナライザーはそのようなエラーを検出しますが、それらとは異なり、ControlFlagは、すべての可能なオプションを予測することが困難な、すぐに使用できるルールを適用せず、すべての種類の使用の統計から開始します。建設の。多数のプロジェクトで。
実験として、 cURLユーティリティのソースコードでControlFlagを使用する場合、 頻繁 例として引用されています 実績のある高品質のコード、静的アナライザー 構造要素「s-> keepon」を使用する際の不注意なバグを明らかにしました。 これは数値型でしたが、ブール値TRUEと比較されました。
OpenSSLコードでは、上記の「(s1 == NULL)∧(s2 == NULL)」の問題に加えて、式「(-2 == rv)」でも異常が検出されました。打ち間違え。
ControlFlagを使用することで、非特定のプロプライエタリソフトウェアの数百のバグを特定でき、クラッシュやメモリの問題が発生したことも報告されています。
最後に あなたがそれについてもっと知りたいなら、詳細を確認できます 次のリンクで。 ソースコードを見たり、入手したり、リポジトリに複製したりすることに興味がある人は、 次のリンク。