プログラミング

プログラミング

プログラマーがデバッグに費やす時間を減らすことができる新しい人工知能(AI)神ツール誕生

RankRED

RankRed is a place where you can find a lot of interesting and inspiring stuff about science and technology, internet, programming tools and plugins, robots, machines and high tech gadgets, and much more.

本記事は、Facebook Builds “SapFix”: An AI Tool That Debugs Code
翻訳・再構成したものです。
配信元または著者の許可を得て配信しています。

193 views

読了時間 : 約2分24秒

・Facebookは、大規模なコードベースで自動化されたエンドツーエンドのテストと修復を実行するAIツールを開発しています。

・これにより、プログラマーはコードのデバッグに費やす時間を減らし、次のことに集中することができます。

・このツールはまだ開発段階にあり、オープンソースリリースを目的としています。

 

プログラマーは、デバッグではなくコードを書くのが好きです。デバッグは退屈で時間のかかるプロセスとされていますが、コーディングの不可分の一部であります。利用可能なデバッグ手法はいくつかありますが、シナリオが異なればさまざまな課題が発生するため、デバッグの正確な方法を計画することは非常に困難です。

 

Facebookのエンジニアは、新しいソフトウェアの展開に焦点を移しながら、プログラマーがデバッグに費やす時間を減らすことができる新しい人工知能(AI)ハイブリッドツールを設計しました。彼らはこのツールをSapFixと名付けました。

 

SapFixは、特定の種類のバグの修正を生成することができ、変更を本番環境にデプロイする前に、承認のために開発者に提示します。Facebookはすでにこのツールを使用して、Androidアプリを使用している何百万人ものユーザーに安定した堅牢なコードアップデートを送信する速度を向上させています。

 

Facebookによると、これほど大規模な本番環境でAIベースのデバッグツールを使用したのはこれが初めてです。彼らは、SapFixをオープンソースツールにして、さまざまな研究組織や企業向けの新しいソフトウェアの生産と安定性を向上させることを計画しています。

 

SapFixはどのように機能しますか?

SapFixは、Sapienz(多くのテストケースを効率的に設計するためにFacebookによって開発されたインテリジェントな自動ソフトウェアテストツール)によって検出されたバグを修正しますが、独立したツールとして機能します。

 

テストとデバッグのプロセスは、Facebookの静的分析ツールとSapienzから始まります。これは、修正が必要なコードの特定の部分を特定します。次に、SapFixは、コードの特定の部分のパッチを作成するために、多数のメソッドからデバッグアプローチを自動的に選択します。

 

大量のバグを処理するために、コードの送信を部分的または完全に元に戻すパッチを生成します。複雑なクラッシュが発生した場合、SapFixは「template-fix」コレクションから選択してパッチを作成します。これらのテンプレートには、人間のエンジニアによって以前に開発および適用された一連の過去の修正が含まれています。

 

これらのテンプレートが機能しない場合、システムは、クラッシュの原因となっているステートメントの抽象構文ツリーに小さな変更を適用することにより、ミューテーションベースの修正を実行します。解決策を検出するまで、パッチを継続的に変更します。

 

SapFixは、1つのバグに対して複数の修正を作成し、次の3つの要素に対して品質をチェックします。

1.コンパイルエラーはあるか?
2.クラッシュは続くか?
3.変更した時に新しいクラッシュが発生するか?

 

SapFixは、パッチが適用されたビルドで人間が作成したテストとSapienzが生成したテストを実行することにより、最後の2つのクエリを処理します。大規模なコードベースは、検証プロセス全体で分離されたままです。

 

SapFixは、本番ソフトウェア自体に修正を適用するために開発されたものではなく、プログラマーが現在行っているデバッグタスクを複製するために開発されたものです。したがって、パッチが完全にテストされると、人間の承認を得るために送信されます。つまり、SapFixは修正を生成し、複数のオプションから最適なものを選択して、人間の開発者に推奨事項を提示します。

 

Facebookは現在、Sapixがさまざまな種類のバグで発生する前にクラッシュを自律的に回避する方法に取り組んでいますが、長期的なアプリケーションには、大規模と小規模の両方で動作できるこのツールのより高速で正確で応答性の高いバージョンの作成が含まれる可能性があります。

おすすめ新着記事

おすすめタグ