要約
コード変換は、プログラムをあるプログラミング言語 (PL) から別のプログラミング言語 (PL) に変換します。
いくつかのルールベースのトランスパイラは、PL の異なるペア間のコード変換を自動化するように設計されています。
ただし、ルールは PL が進化するにつれて時代遅れになる可能性があり、他の PL に一般化することはできません。
最近の研究では、大規模言語モデル (LLM) を使用したコード翻訳の自動化が検討されています。
重要な観察の 1 つは、このような手法は、細工されたベンチマークにはうまく機能するかもしれないが、依存関係、カスタム タイプ、PL 固有の機能などを伴う現実世界のプロジェクトの規模と複雑さには一般化できないということです。私たちは、神経記号的なアプローチである AlphaTrans を提案します。
リポジトリレベルのコード変換を自動化します。
AlphaTrans はソース コードとテスト コードの両方を翻訳し、複数レベルの検証を採用して、翻訳によってソース プログラムの機能が保持されていることを確認します。
LLM の問題を分析するために、AlphaTrans はプログラム分析を利用してプログラムをフラグメントに分解し、それらを逆の呼び出し順序で変換します。
私たちは AlphaTrans を活用して、<836, 8575, 2719> クラス、メソッド、テストで構成される 10 個の実世界のオープンソース プロジェクトを翻訳しました。
AlphaTrans は、6899 のソース コード フラグメントで構成されるこれらのプロジェクトのリポジトリ全体を翻訳しました。
翻訳されたコード フラグメントの 99.1% は構文的に正しく、AlphaTrans は翻訳の実行時の動作と機能の正確性を 25.8% について検証します。
統合された翻訳と検証では、プロジェクトの翻訳に平均して 36 時間かかり、実際にその拡張性が示されています。
構文的または意味的に正しくない変換については、AlphaTrans は既存の変換、スタック トレース、テスト エラー、またはアサーションの失敗を含むレポートを生成します。
4 つのプロジェクトの翻訳バグを修正するために、これらのアーティファクトを 2 人の開発者に提供しました。
彼らは平均 20.1 時間で問題を修正し、すべてのテストに合格することができました。
要約(オリジナル)
Code translation transforms programs from one programming language (PL) to another. Several rule-based transpilers have been designed to automate code translation between different pairs of PLs. However, the rules can become obsolete as the PLs evolve and cannot generalize to other PLs. Recent studies have explored the automation of code translation using Large Language Models (LLMs). One key observation is that such techniques may work well for crafted benchmarks but fail to generalize to the scale and complexity of real-world projects with dependencies, custom types, PL-specific features, etc. We propose AlphaTrans, a neuro-symbolic approach to automate repository-level code translation. AlphaTrans translates both source and test code, and employs multiple levels of validation to ensure the translation preserves the functionality of the source program. To break down the problem for LLMs, AlphaTrans leverages program analysis to decompose the program into fragments and translates them in the reverse call order. We leveraged AlphaTrans to translate ten real-world open-source projects consisting of <836, 8575, 2719> classes, methods, and tests. AlphaTrans translated the entire repository of these projects consisting of 6899 source code fragments. 99.1% of the translated code fragments are syntactically correct, and AlphaTrans validates the translations’ runtime behavior and functional correctness for 25.8%. On average, the integrated translation and validation take 36 hours to translate a project, showing its scalability in practice. For the syntactically or semantically incorrect translations, AlphaTrans generates a report including existing translation, stack trace, test errors, or assertion failures. We provided these artifacts to two developers to fix the translation bugs in four projects. They were able to fix the issues in 20.1 hours on average and achieve all passing tests.
arxiv情報
著者 | Ali Reza Ibrahimzada,Kaiyao Ke,Mrigank Pawagi,Muhammad Salman Abid,Rangeet Pan,Saurabh Sinha,Reyhaneh Jabbarvand |
発行日 | 2024-10-31 16:46:52+00:00 |
arxivサイト | arxiv_id(pdf) |
提供元, 利用サービス
arxiv.jp, Google