オブジェクトへのタグ付け (Pro)
タグは、オブジェクトをフィルタリングして、より小さく扱いやすい単位にグループ化するのに理想的です。ステータスを示すためや、データモデル全体にわたって製品タイプ、製品、エンゲージメント、検出事項のカスタムセットを作成するために使用できます。
DefectDojoでは、タグはファーストクラスの存在として扱われ、データモデルの各レベルにおける整理を促進する仕組みとして認識されています。
以下は、2つのタグを持つ製品と、それぞれ1つのタグを持つ4件の検出事項の例です。

タグの形式
タグは以下のいずれかの形式でフォーマットできます。
- StringWithNoSpaces
- string-with-hyphens
- string_with_underscores
- colons:acceptable
タグの管理(Pro UI)
追加と削除
タグは以下の方法で管理できます。
新しいオブジェクトの作成または編集
UIまたはAPIを通じて新しいオブジェクトを作成または編集する際、そのオブジェクトに設定するタグを指定するフィールドがあります。

検出事項のインポート/再インポート時
タグは、UIとAPIの両方でインポート/再インポートフォームから利用できます。このフォームが送信されると、テストには[tag]と[daily-import]のタグが付けられます。「検出事項にタグを適用」または「エンドポイントにタグを適用」が選択されている場合、それらのオブジェクトにもタグが付けられます。タグは、テストや検出事項オブジェクト自体には直接記録されない可能性がある自動化の実行の詳細やツール情報を追加する機会を提供します。

- 一括編集を利用
テーブルから多数の検出事項を選択した場合、一括編集メニューを使用して、それら複数の検出事項に関連付けられたタグを一度に変更できます。これにより、指定したタグで検出事項レベルのすべてのタグが置き換えられる点に注意してください。既存の検出事項のタグは上書きされます。

タグの管理(クラシックUI / オープンソース)
追加と削除
タグは以下の方法で管理できます。
新しいオブジェクトの作成または編集
UIまたはAPIを通じて新しいオブジェクトを作成または編集する際、そのオブジェクトに設定するタグを指定するフィールドがあります。このフィールドはマルチセレクトフィールドであり、既存のタグの検索や追加を簡単に行えるオートコンプリート機能も備えています。前のセクションのスクリーンショットにある製品では、このフィールドは次のように表示されます。

インポートと再インポート
タグは、インポートまたは再インポート時に特定のテストに適用することもできます。これは、自動化を用いてAPI経由でインポートする際に非常に便利なユースケースであり、テストや検出事項オブジェクト自体には直接記録されない可能性がある自動化の実行の詳細やツール情報を追加する機会を提供します。
このフィールドの見た目と動作は、他のオブジェクトの場合とまったく同じです。
一括編集メニュー(検出事項のみ)
同じタグのセットで多数の検出事項を更新する必要がある場合、一括編集メニューを使用して手間を軽減できます。
次の例では、タグ「tag-group-alpha」を持つ2件の検出事項のタグを、新しいタグリスト[“tag-group-charlie”, “tag-group-delta”]に更新したいとします。まず、更新するタグを持つ検出事項を選択します。

検出事項が選択されると、「一括編集」という名前の新しいボタンが表示されます。このボタンをクリックすると、多くのオプションを含むドロップダウンメニューが表示されますが、ここではタグのみに焦点を当てます。次のようにフィールドを目的のタグリストに更新し、送信をクリックします。

選択した検出事項のタグは、一括編集メニュー内のタグフィールドで指定した内容に更新されます。

タグの継承
Pro UIに関する注記:タグの継承はPro UIで設定できますが、継承されたタグは現在のところ、クラシックUIまたはAPIを通じてのみアクセスおよびフィルタリングが可能です。
タグの継承が有効になっている場合、ある製品に適用されたタグは、製品階層内でその製品配下にあるすべてのオブジェクトに自動的に適用されます。
設定
タグの継承は、以下のスコープレベルで有効にできます。
- グローバルスコープ
- システム全体のすべての製品が、すべての子オブジェクト(エンゲージメント、テスト、検出事項)へのタグの適用を開始します。
- これはシステム設定内で設定されます。
- 製品スコープ
- 選択した製品のみが、すべての子オブジェクト(エンゲージメント、テスト、検出事項)へのタグの適用を開始します。
- これは製品の作成/編集ページで設定されます。
動作
タグの継承が有効な場合、標準のタグは通常の方法でオブジェクトに追加および削除できます。ただし、継承されたタグは、親オブジェクトから削除しない限り、子オブジェクトから削除することはできません。次の例では、テストオブジェクトに「test_only_tag」タグを、エンゲージメントに「engagement_only_tag」タグを追加しています。

製品のタグリストが更新されると、同じ変更が製品内のすべてのオブジェクトに非同期的に適用されます。このタスクにかかる時間は、検出事項に含まれるオブジェクトの数に直接相関します。
オープンソース: タグの変更が妥当な時間内に反映されない場合は、celeryワーカーのログを確認して、問題が発生した箇所を特定してください。
タグのフィルタリング(クラシックUI)
タグは、UIとAPIの両方を通じて多くの方法でフィルタリングできます。例えば、以下は検出事項フィルターの抜粋です。

タグに関連するフィールドは10個あります。
- タグ:指定した検出事項に付けられているタグでフィルタリングします。
- 例:
- 検出事項が返される場合
- 検出事項のタグ:[“A”, “B”, “C”]
- フィルタークエリ:“B”
- 検出事項が返されない場合
- 検出事項のタグ:[“A”, “B”, “C”]
- フィルタークエリ:“F”
- 検出事項が返される場合
- 例:
- タグではない:指定した検出事項に付けられていないタグでフィルタリングします。
- 例:
- 検出事項が返される場合
- 検出事項のタグ:[“A”, “B”, “C”]
- フィルタークエリ:“F”
- 検出事項が返されない場合
- 検出事項のタグ:[“A”, “B”, “C”]
- フィルタークエリ:“B”
- 検出事項が返される場合
- 例:
- タグ名に含む:指定した検出事項において、クエリの一部または全部を含むタグでフィルタリングします。
- 例:
- 検出事項が返される場合
- 検出事項のタグ:[“Alpha”, “Beta”, “Charlie”]
- フィルタークエリ:“et”(“Beta"の一部)
- 検出事項が返されない場合
- 検出事項のタグ:[“Alpha”, “Beta”, “Charlie”]
- フィルタークエリ:“meg”(“Omega"の一部)
- 検出事項が返される場合
- 例:
- タグではない(名前に含まない):指定した検出事項において、クエリの一部または全部を含まないタグでフィルタリングします。
- 例:
- 検出事項が返される場合
- 検出事項のタグ:[“Alpha”, “Beta”, “Charlie”]
- フィルタークエリ:“meg”(“Omega"の一部)
- 検出事項が返されない場合
- 検出事項のタグ:[“Alpha”, “Beta”, “Charlie”]
- フィルタークエリ:“et”(“Beta"の一部)
- 検出事項が返される場合
- 例:
他の6つのタグフィルターは、上記の「タグ」および「タグではない」と同じルールに従いますが、データモデル内の異なるレベルに適用されます。
- タグ(テスト):指定した検出事項のテストに付けられているタグでフィルタリングします。
- タグではない(テスト):指定した検出事項のテストに付けられていないタグでフィルタリングします。
- タグ(エンゲージメント):指定した検出事項のエンゲージメントに付けられているタグでフィルタリングします。
- タグではない(エンゲージメント):指定した検出事項のエンゲージメントに付けられていないタグでフィルタリングします。
- タグ(製品):指定した検出事項の製品に付けられているタグでフィルタリングします。
- タグではない(製品):指定した検出事項の製品に付けられていないタグでフィルタリングします。