論文の概要: 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つはシンボリック実行の可能性を探るものである。
メソッドは、コード例によって、非常に詳細に説明され、サポートされます。
このチュートリアルの読者は静的解析ツールのアーキテクトと、異なるメソッドの利点と制約を理解したい開発者の両方である。
関連論文リスト
- ReF Decompile: Relabeling and Function Call Enhanced Decompile [50.86228893636785]
逆コンパイルの目標は、コンパイルされた低レベルコード(アセンブリコードなど)を高レベルプログラミング言語に変換することである。
このタスクは、脆弱性識別、マルウェア分析、レガシーソフトウェアマイグレーションなど、さまざまなリバースエンジニアリングアプリケーションをサポートする。
論文 参考訳(メタデータ) (2025-02-17T12:38:57Z) - On the Role of Pre-trained Embeddings in Binary Code Analysis [7.161446721947512]
事前訓練されたアセンブリコードの埋め込みは、バイナリコード解析タスクを解決するためのゴールドスタンダードになっている。
自然言語処理とは対照的に、ラベル情報はバイナリコード解析において多くのタスクにおいて不足しない。
我々は,120万関数のコーパスを用いて,5つの下流タスクに対するアセンブリコードに対する最近の埋め込みを体系的に評価した。
論文 参考訳(メタデータ) (2025-02-12T10:50:46Z) - Breaking Bad: How Compilers Break Constant-Time~Implementations [12.486727810118497]
本稿では,ディフェンシブプログラミング手法によって導入されたプロテクションを,コンパイラがどのように壊すかを検討する。
我々は,現在最先端の暗号ライブラリにそのようなコンパイラによって引き起こされる問題が現れるかどうかを,大規模な実験で検証する。
本研究は,最も高い評価を受けている暗号ライブラリのいくつかにおいて,コンパイラが引き起こす秘密の操作がいくつか発生していることを明らかにする。
論文 参考訳(メタデータ) (2024-10-17T12:34:02Z) - One Step at a Time: Combining LLMs and Static Analysis to Generate Next-Step Hints for Programming Tasks [5.069252018619403]
学生はプログラミングを学ぶとき、特にオンラインでやらなければならないとき、プログラミングの問題を解決するのに苦労することが多い。
このヘルプは次のステップのヒント生成として提供され、生徒が次にすべき小さなステップを教えて、正しいソリューションを得る。
本稿では,プログラムタスクのためのテキストヒントとコードヒントの両方を提供する新しいシステムを提案する。
論文 参考訳(メタデータ) (2024-10-11T21:41:57Z) - Scaling Symbolic Execution to Large Software Systems [0.0]
シンボル実行は、プログラム検証とバグ検出ソフトウェアの両方で使用される一般的な静的解析手法である。
我々は、Clang Static Analyzerと呼ばれるエラー検出フレームワークと、その周辺に構築されたインフラストラクチャーであるCodeCheckerに焦点を当てた。
論文 参考訳(メタデータ) (2024-08-04T02:54:58Z) - 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) - 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)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。