論文の概要: Implementing and Executing Static Analysis Using LLVM and CodeChecker
- arxiv url: http://arxiv.org/abs/2408.05657v1
- Date: Sat, 10 Aug 2024 23:49:04 GMT
- ステータス: 処理完了
- システム内更新日: 2024-08-13 18:01:49.040232
- Title: Implementing and Executing Static Analysis Using LLVM and CodeChecker
- Title(参考訳): LLVMとCodeCheckerを用いた静的解析の実装と実行
- Authors: Gabor Horvath, Reka Kovacs, Richard Szalay, Zoltan Porkolab,
- Abstract要約: 本チュートリアルでは,C++プログラミング言語の問題点を2つ提示する。
チェッカーを実装するためのステップバイステップガイドを提供します。
このチュートリアルの読者は静的解析ツールのアーキテクトと開発者の両方である。
- 参考スコア(独自算出の注目度): 0.0
- License: http://creativecommons.org/licenses/by/4.0/
- Abstract: Static analysis is a method of analyzing source code without executing it. It is widely used to find bugs and code smells in industrial software. Besides other methods, the most important techniques are those based on the abstract syntax tree and those performing symbolic execution. Both of these methods found their role in modern software development as they have different advantages and limitations. In this tutorial, we present two problems from the C++ programming language: the elimination of redundant pointers, and the reporting of dangling pointers originating from incorrect use of the std::string class. These two issues have different theoretical backgrounds and finding them requires different implementation techniques. We will provide a step-by-step guide to implement the checkers (software to identify the aforementioned problems) - one based on the abstract syntax analysis method, the other exploring the possibilities of symbolic execution. The methods are explained in great detail and supported by code examples. The intended audience for this tutorial are both architects of static analysis tools and developers who want to understand the advantages and constraints of the different methods.
- Abstract(参考訳): 静的解析はソースコードを実行せずに解析する方法である。
産業用ソフトウェアでバグやコードの臭いを見つけるのに広く使われている。
他のメソッドの他に、最も重要なテクニックは抽象構文木とシンボリック実行の実行に基づくものである。
どちらの方法も、異なる利点と制限があるため、現代のソフトウェア開発での役割を見出した。
本チュートリアルでは,C++プログラミング言語の冗長ポインタの排除と,std::stringクラスの不正使用に起因するダングリングポインタの報告という,2つの問題を提示する。
これら2つの問題には異なる理論的背景があり、その発見には異なる実装技術が必要である。
我々は,上記の問題を特定するためのソフトウェアであるチェッカーを実装するためのステップバイステップガイドを提供する。1つは抽象構文解析法に基づくもので,もう1つはシンボリック実行の可能性を探るものである。
メソッドは、コード例によって、非常に詳細に説明され、サポートされます。
このチュートリアルの読者は静的解析ツールのアーキテクトと、異なるメソッドの利点と制約を理解したい開発者の両方である。
関連論文リスト
- Language Models as Compilers: Simulating Pseudocode Execution Improves Algorithmic Reasoning in Language Models [17.76252625790628]
本稿では,言語モデルの推論過程を2段階に分解するフレームワークであるThink-and-Executeについて述べる。
7つのアルゴリズム的推論タスクについて広範な実験を行い、思考と実行の有効性を実証する。
論文 参考訳(メタデータ) (2024-04-03T08:49:11Z) - Enabling Memory Safety of C Programs using LLMs [5.297072277460838]
C言語で書かれた低レベルのコードのメモリ安全性違反は、ソフトウェア脆弱性の主要な原因のひとつであり続けています。
このような違反を建設によって除去する方法の1つは、安全なC方言にCコードを移植することである。
このような方言は、最小限のランタイムオーバーヘッドで安全性を保証するためにプログラマが提供するアノテーションに依存している。
この移植は、プログラマに多大な負担をかける手作業であり、そのため、このテクニックの採用は限られている。
論文 参考訳(メタデータ) (2024-04-01T13:05:54Z) - Context-Sensitive Abstract Interpretation of Dynamic Languages [0.0]
Javaのような静的言語とPythonやJavaScriptのような動的言語の間には、IDEツールの品質に大きなギャップがあります。
これらの言語の現代的なフレームワークやライブラリは、最高のエルゴノミクスと可読性を達成するために、その動的能力を大いに利用しています。
本稿では,プログラムの動的メタプログラミングと実行を静的に解析することで,このギャップを埋めるアルゴリズムを提案する。
論文 参考訳(メタデータ) (2024-01-31T17:45:05Z) - LILO: Learning Interpretable Libraries by Compressing and Documenting Code [71.55208585024198]
LILOは、反復的に合成、圧縮、文書化を行う、ニューロシンボリックなフレームワークである。
LILOは、LLM誘導プログラム合成と、Stitchから自動化された最近のアルゴリズムの進歩を組み合わせたものである。
LILOのシンセサイザーが学習した抽象化を解釈し、デプロイするのを手助けすることで、AutoDocがパフォーマンスを向上させることが分かりました。
論文 参考訳(メタデータ) (2023-10-30T17:55:02Z) - A Static Evaluation of Code Completion by Large Language Models [65.18008807383816]
単純なプログラミング問題に対するモデル生成コードの機能的正当性を評価するために,実行ベースベンチマークが提案されている。
プログラムを実行せずにエラーを検出するlinterのような静的解析ツールは、コード生成モデルを評価するために十分に研究されていない。
抽象構文木を利用して,Pythonのコード補完における静的エラーを定量化する静的評価フレームワークを提案する。
論文 参考訳(メタデータ) (2023-06-05T19:23:34Z) - Better Context Makes Better Code Language Models: A Case Study on
Function Call Argument Completion [15.068025336990287]
既存のコード補完モデルでは、完了タスクに良い結果が得られないことを示します。
与えられた関数呼び出しに関する情報をプログラムアナライザに問い合わせ、推論およびトレーニング中に異なるコード補完モデルに対してアナライザ結果を提供する方法を検討する。
実験の結果,関数の実装と関数の使用量へのアクセスは,引数補完性能を大幅に向上させることがわかった。
論文 参考訳(メタデータ) (2023-06-01T06:25:58Z) - Code Prompting: a Neural Symbolic Method for Complex Reasoning in Large
Language Models [74.95486528482327]
コードプロンプト(code prompting)は、ゼロショットバージョンと少数ショットバージョンの両方を持ち、中間ステップとしてコードをトリガーするニューラルシンボルプロンプトである。
我々は,記号的推論と算術的推論を含む7つの広く使用されているベンチマーク実験を行った。
論文 参考訳(メタデータ) (2023-05-29T15:14:09Z) - Code Execution with Pre-trained Language Models [88.04688617516827]
コードインテリジェンスのトレーニング済みモデルのほとんどは実行トレースを無視しており、ソースコードと構文構造のみに依存している。
我々は,大規模かつ現実的なPythonデータセットとコード実行タスクを作成するために,突然変異に基づくデータ拡張手法を開発した。
次に、コード実行事前学習とカリキュラム学習を活用して意味理解を強化するトランスフォーマーモデルであるCodeExecutorを提案する。
論文 参考訳(メタデータ) (2023-05-08T10:00:05Z) - Transductive Learning for Unsupervised Text Style Transfer [60.65782243927698]
教師なしスタイル転送モデルは、主に帰納的学習アプローチに基づいている。
本稿では,検索に基づく文脈認識スタイルの表現に基づく新しいトランスダクティブ学習手法を提案する。
論文 参考訳(メタデータ) (2021-09-16T08:57:20Z) - D2A: A Dataset Built for AI-Based Vulnerability Detection Methods Using
Differential Analysis [55.15995704119158]
静的解析ツールによって報告されたラベル問題に対する差分解析に基づくアプローチであるD2Aを提案する。
D2Aを使用して大きなラベル付きデータセットを生成し、脆弱性識別のためのモデルをトレーニングします。
論文 参考訳(メタデータ) (2021-02-16T07:46:53Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。