このプロジェクトについて
AutoFFFは、埋め込みCのユニットテストにおける共通の問題に対処するために設計されたPythonベースのユーティリティです。
自動生成が解決する核心的な問題は、ホストマシン上での埋め込みCコードのテストがしばしば不可能である点です。ホストアーキテクチャは対象プラットフォームと異なり、埋め込み環境は通常ダイナミックリンクをサポートせず、C言語にはテスト対象のコードをランタイムに操作するための組み込み反射機能もありません。ターゲットプラットフォームのAPIをフェイク実装でリンクすることでこの問題を回避できますが、API関数のための手動フェイク定義の作成は手間がかかり、エラーが発生しやすいものです。また、手動で維持されるテストヘッダは元APIが進化するにつれて「コード腐食」が発生しやすいという問題もあります。
AutoFFFはC APIヘッダファイルを解析し、使用準備済みのFFF互換フェイク定義を持つテストヘッダを自動生成することで、このプロセスを自動化します。「wrapping」というフェイク手法に従い、生成されるテストヘッダは元のAPIヘッダを含んで型・変数・関数の宣言を継承し、必要なフェイク定義のみを追加します。このアプローチは、すべてのAPI要素を手動で再宣言する必要があり、元のヘッダとの同期が失われやすい「banning」戦略よりもはるかに保守性が高く設計されています。
ツールには、ヘッダファイル内で直接定義された関数のための組み込みワークアラウンドが含まれています。こうした関数は通常、フェイク化されると再定義エラーを引き起こしますが、AutoFFFはマクロのリルーティングを使用して、テストヘッダがテストファイル内でテスト対象コードより先にインクルードされる限り、元のインヘッダ関数への呼び出しを生成されたフェイクへとリダイレクトします。
AutoFFFは、必須のヘッダを注入したり、解析時にプリプロセッサマクロを定義したりするコマンドラインオプションを通じて、FreeRTOSやCMSISのような厳格なインクルードポリシーを持つライブラリでも動作可能です。スタンドアロンコマンドラインモジュールとして実行するか、カスタムスクリプト内でPythonパッケージとして使用するか、提供例のMakefileを介してMakeなどのビルドシステムに統合することができます。
2つのジェネレータモードを提供しています。BareFakeGeneratorは、ユーザーが独自処理を追加できるようにヘッダボイラープレートなしの生のFFFマクロ定義のみを出力します。SimpleFakeGeneratorは、すぐにコンパイル可能なテストヘッダをインクルードガードと必須include付きで生成します。
AutoFFFはMITライセンスの下で配布され、PyPI経由で入手可能です。Cのパー싱にはpycparserプロジェクトのfake_libc_includeヘッダコレクションが必要で、pipリリースには含まれていないため、pycparserリポジトリから別途取得する必要があります。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.