Intelがリリースしました の重要なバージョンをリリース ControlFlag 1.0、 これは ソフトウェア制御システム 許可 コード内のエラーや異常を検出する 大量の既存のコードでトレーニングされた機械学習システムを使用したソース。
従来の静的アナライザーとは異なり、 ControlFlagは、事前定義されたルールを適用しません。 考えられるすべてのオプションを予測することは困難ですが、むしろ すべてのタイプの構造の使用の統計の一部 多数の既存のプロジェクトの言語。
調査によると、コードのバグの発見と削除はほとんどの場合手動で行われ、開発者の作業時間の50%以上を要します。
このツールは、これらのスタイルオプションの識別とラベル付けを学習し、知識に基づいてバグの識別と推奨事項の修正をカスタマイズして、開発者のXNUMXつのチーム間のスタイルの逸脱である可能性のあるControlFlagの不正なコードの特性を最小限に抑えることができます。
ControlFlagについて
システム 既存のソースコードマトリックスから統計モデルを構築することによってトレーニングされます GitHubおよび同様の公開リポジトリで公開されています。 トレーニング段階では、システムはコード内の構造を構築するための一般的なテンプレートを決定し、プログラム内のコード実行のフローを反映して、これらのテンプレート間の接続の構文ツリーを構築します。
その結果、分析されたすべてのソーステキストの開発経験を組み合わせた参照決定木が形成されます。 同様のパターン設定プロセスがテスト対象のコードに対して実行され、参照決定木と比較されます。 隣接するブランチとの大きな不一致は、検証中のパターンに異常があることを示しています。
特徴の バージョンの ControlFlag 1.0、Cテンプレートの完全サポートが強調表示されています と検出する能力 条件付きの「if」ステートメントの異常。
たとえば、コードスニペット「if(x = 7)y = x;」を解析する場合システムは、数値を比較するために「if」ステートメントで「variable == number」構文が一般的に使用されていることを検出するため、「if」ステートメントの「variable = number」の表示はおそらく誤植が原因です。
キット GitHubで利用可能なCリポジトリをダウンロードできるスクリプトを提供します それらを使用してモデルを構築します。 すぐに使えるモデルも利用できるため、コードのチェックをすぐに開始できます
システム マシンプログラミング研究プロジェクトの一部です (MPR)Intelの。主な目標は、自動化によりソフトウェア開発に必要な時間を1000分のXNUMXに短縮することです。
特に、Intelは現在、検出されたエラーを自動的に修正するようにControlflagをトレーニングするように取り組んでいます。 また、2020年に、同社はMITラボと共同で開発されたMISIMツールをリリースしました。このツールは、コードスニペットを調べて、コードの目的を理解することができます。 このシステムは、開発者にコード効率を向上させる方法を提供するために使用することを目的としています。
「デバッグは、開発者と業界全体にさらに大きな損害を与えると予想される」とインテルは述べた。 発表…「完全に実装されると、ControlFlagは、テスト、監視、デバッグなどのソフトウェア開発の煩わしさを自動化することで、この課題を軽減するのに役立ちます。」
「パターン認識に対するControlFlagの教師なしアプローチの主な利点は、基本的に開発者のスタイルに適応することを学ぶことができることです。 プログラムには、評価する必要のある制御ツールへの入力が制限されているためです。 ControlFlagは、読者が単語間の完全な違いを認識し、英語の略語を使用できるのと同じ方法で、プログラミング言語の活版印刷のバリエーションを識別できます」とIntelは書いています。
最後に あなたがそれについてもっと知りたいなら ControlFlagについては、C ++で記述されており、MITライセンスとそのコードの下でオープンソースであることを知っておく必要があります。 GitHubでホストされています。