:toc:
= GitLab プロトコルファザー コミュニティエディション
このプロジェクトは、https://about.gitlab.com/press/releases/2020-06-11-gitlab-acquires-peach-tech-and-fuzzit-to-expand-devsecops-offering.html[GitLabに買収されました]Peach Fuzzer Professional v4 をベースとしています。Peach Fuzzer Professional の一部の機能は削除され、将来 GitLab の一部として利用可能になる予定です。このプロジェクトは、GitLab および Source Forge でホストされていた Peach Fuzzer Community プロジェクトに代わるものです。
このコードは元々 Peach Tech によって開発されたため、リポジトリ全体に Peach Tech 特有の担当者、メールアドレス、Web サイト、または機能に関する言及がある場合があります。これらは時間の経過とともに GitLab を参照するように更新されます。見つけた場合は、お気軽に MR を開いて説明や更新を依頼してください。
バイナリが利用可能になるまでは、ローカルビルドの手順に従ってください。
== リポジトリ構成
build::
リポジトリをコンパイルするためのビルドスクリプト。
waf(Peach で使用されるビルドシステム)、asciidoctor テンプレート、および統合ビルドで Jenkins が使用するさまざまなスクリプトが含まれます。
core::
OSS とクローズドソースの Peach 間の共通クラスとインターフェース。
docs::
ユーザーガイド、開発者ガイド、トライアルガイドの全ドキュメント。
packer::
ホスト型トライアル AMI およびオンプレミストライアル OVA を生成するために packer (https://packer.io) が使用するテンプレートとスクリプト。
pro::
Peach Professional および関連アプリケーションとテストのソースコード。
tools::
ビルドに必要なスクリプト(nunit ランチャーおよび *.exe.config ジェネレーター)。
== Git ワークフロー
ビルドスクリプトは、すべてのコミットメッセージが一連のルールに従うことを期待しています。
メッセージは以下のプレフィックスのいずれかで開始する必要があります(MUST):
new: chg: fix: dev:。
マージコミットは許可されず、すべての PR は単一のコミットに squash されることが推奨されます。
コミットメッセージの最初の行は、顧客向けのチェンジログを自動生成するために使用されます。
コミットメッセージの後続の行には何を書いてもよく、チェンジログの生成中は無視されます。
コミットメッセージが dev: で始まる場合、そのコミットはチェンジログから省略されます。
その他のコミットは、new、changed、fixed のいずれかに分類されます。
== ローカルビルド手順
Peach は Windows、Linux、OSX でのコンパイルをサポートしています。 Peach はビルドシステムとして waf (https://waf.io/) を使用します。 Waf は「ビルドバリアント」の概念をサポートしており、さまざまなプラットフォームやアーキテクチャ向けに Peach をコンパイルするために使用されます。
Peach は 11 の異なるビルドバリアントを使用します:
Windows::
win_x86_debug win_x86_release win_x64_debug win_x64_release
Linux::
linux_x86_debug linux_x86_release linux_x86_64_debug linux_x86_64_release
OSX::
osx_debug osx_release
Documentation::
doc
Waf はアウトオブツリービルドを行います。つまり、中間ファイルと出力バイナリはソースコードとは異なるディレクトリに配置されます。
Peach ビルドの場合、中間ファイルは slag/{variant} ディレクトリに配置され、output/{variant} ディレクトリにインストールされます。
Waf はルートのすべてのサブディレクトリで wscript_build ファイルを探し、その中の内容を実行します。
ほとんどのトップレベルの wscript_build ファイルは、通常、再帰的に探索するサブディレクトリのリストを含んでいるだけです。
=== Windows ビルドの前提条件:
PowerShell を使用して以下の 2 つのレジストリエントリを追加してください:
=== Linux ビルドの前提条件:
=== ビルドコマンド
Peach をコンパイルするために必要な最小限のコマンドを以下に示します:
waf configure::
これは Peach をコンパイルするために最初に実行する必要があるステップです。
このステップは Linux ライブラリコンパイルの autoconf フェーズに類似しています。 +
+
Waf はすべてのビルド依存関係を特定し、そのパスを保存しようとします。
特定のバリアントに対してビルド依存関係が見つからない場合、そのビルドバリアントはサポート対象外としてマークされます。
これは、linux_x86_64 のみをビルドしたいが、ドキュメントはビルドしたくない場合に便利です。 +
+
設定フェーズでは、packt (https://fsprojects.github.io/Paket/) プログラムを実行し、
paket/paket.dependencies にリストされた要件を使用して nuget からすべてのサードパーティ依存関係を取得します。 +
+
注: waf configure は 1 回だけ実行する必要があります。
通常の開発者ワークフロー(Peach ソースの変更)では、このコマンドを再実行する必要はありません。
ただし、ビルドスクリプト(build ディレクトリ内)に変更を加えたり、インストールされたビルドツールのセットを変更した場合は、更新されたツールパスを解決するためにこのコマンドを再実行する必要があります。 +
+
ヒント: 必要なツールが見つからないためにエラーが発生した場合は、詳細出力を増やして再実行してみてください。 waf configure -v は、特定されるすべての依存関係と、それが検出された完全なパスを表示します。 +
+
設定フェーズは、統合ビルドがバージョン番号を設定する方法でもあります。
waf configure --buildtag=4.3.100 を実行すると、すべてのビルド成果物に指定された buildtag がスタンプされます。
オプションが指定されない場合、buildtag はデフォルトで 0.0.0 になります。
waf build::
リポジトリ内のすべてのビットをコンパイルするコマンドです。
コンパイルには、バージョンがスタンプされたファイルの生成、
ソースコードのトランスパイルの実行、
ソースのコンパイルと結果のリンクが含まれます。 +
+
このコマンドは、Linux で make を実行するのと類似しています。 +
+
ビルドフェーズのすべての成果物は slag/{variant} ディレクトリに配置されます。
waf install::
このコマンドは、プログラムの出力とすべてのライブラリ依存関係を output/{variant} ディレクトリにインストールします。 +
+
このコマンドは、Linux で make install を実行するのと類似しています。 +
+
Linux での通常の開発者ワークフローは、waf install --variant=linux_x86_64_debug を実行し、
その後 ./output/linux_x86_64_debug/bin/peach を実行することです。
=== オプションのビルドコマンド
waf pkg::
インストーラーの zip を生成します。
Peach の場合、2 つの zip があります。1 つは内部使用(単体テスト/統合テストの実行)用、
もう 1 つは外部使用(ダウンロードサイトへのアップロード)用です。
2 つの zip は output/{variant}/pkg フォルダに配置されます。
最後に、この waf コマンドはローカルライセンスサーバーの zip を作成します。
waf test::
すべての単体テストを実行します。Windows x64 デバッグバリアントの単体テストを実行するには、
waf test --variant=win_x64_debug を実行できます。
waf msvs2017::
Visual Studio 2017 で使用するためのすべての .csproj ファイルと Peach.sln ファイルを作成します。
waf zip:: インストールフェーズのすべての出力を単一のアーティファクトに zip 圧縮します。
=== Waf の注意事項
Waf の使用法は次の構文に従います: waf [command] [options]
すべてのコマンドで、1 つ以上の -v 引数を追加することで詳細出力を増やすことができます。
configure 以外のすべてのコマンドでは、以下のオプションがサポートされています:
--variant=xxx は、名前に 'xxx' を含むバリアントにコマンドをフィルタリングします。
つまり、--variant=4_d は linux_x86_64_debug と win_x64_debug のバリアントに一致します。-j1 は waf のタスク並列化を制御し、一度に 1 つのタスクのみ実行できるようにします。
デフォルトでは、waf は N 個のタスクを同時に実行します。N はホストの CPU コア数に対応します。
一度に 1 つのタスクのみ実行することで、ビルドエラーのトラブルシューティングに役立つ場合があります。waf --help は、サポートされているすべてのコマンドとオプションの完全なリストを表示します。== マージリクエストの提出
ガイドライン
. プルリクエストには単体テストを提供する必要があります . ログ出力の正しい使用 . すべてのマージリクエストはソースコードレビューを受けます
マージリクエストを受け入れてもらうための期限がある場合は、Peach チーム、特に @mikeeddington に必ず連絡してください。そうしないと、マージリクエストが受け入れられるまでに数か月かかることも珍しくありません。
=== ロギング
Peach はデバッグ/トレースメッセージのログ出力に NLog を使用します。
Debug:: デバッグメッセージは控えめに使用する必要があります。 顧客は --debug を使用してピットの問題を特定します。 エンドユーザーが必要とする情報のみを表示し、出力を簡潔に保つことが重要です。
Trace:: このログレベルは、主に Peach 開発者が望む出力や問題診断時に使用するためのものであり、 顧客が常に表示したいものではありません。
=== 単体テスト
すべてのプルリクエストには、すべての機能を適切にカバーする単体テストが必要です。 NUnit が当社の単体テストフレームワークです。 プルリクエストを送信する前に、すべての Peach 単体テストが合格していることを確認してください。
=== ドキュメント
出荷するすべてのコード機能には製品ドキュメントが必要です。 これは、修正や類似の追加に関する新しいドキュメント、または既存のドキュメントの更新である可能性があります。