このセクションの内容

概要

テスト コンフィギュレーションは、どのようにコードを解析するかを定義したものです。たとえば、有効にする静的解析ルール、実行するテストなどの解析パラメーターを定義します。 dotTEST にはビルトイン テスト コンフィギュレーションがあらかじめ用意されていますが、ユーザーは、DTP Server でユーザー独自のテスト コンフィギュレーションを作成して保存することもできます (詳細は DTP のマニュアルを参照)。

DTP Server からユーザー定義のテスト コンフィギュレーションをダウンロードし、*.properties ファイルとして [INSTALL_DIR]/configs/user ディレクトリに保存できます。  

テスト コンフィギュレーションの実行

実行するテスト コンフィギュレーションを指定する方法はいくつかあります。

  • -config スイッチを使用し、ビルトイン、ユーザー定義、またはDTP にホストされたテスト コンフィギュレーションを指定して dottestcli を実行します。

    -config "builtin://Recommended Rules"
    -config "user://Foo Configuration"
    -config "dtp://Foo Team Configuration" 
    -config "dtp://FooTeamConfig.properties"

    (info)使用している Parasoft ツールの接頭辞を付加して、DTP にホストされたテスト コンフィギュレーションを指定することもできます。

    -config "dottest.dtp://Foo Team Configuration" 

    テスト コンフィギュレーションの .properties ファイルのファイル名または URL を指定することもできます。

    -config "C:\Devel\Configs\FooConfig.properties" 
    -config "http://foo.bar.com/configs/FoodConfig.properties"


    たとえば、コマンドは次のようになります。

    dottestcli.exe -solution "C:\Devel\MyFooSolution\MySolution.sln" -config "builtin://Demo" -report "C:\Report"

  • .properties ファイルで、-config オプションが指定されていない場合に実行されるデフォルト コンフィギュレーションを指定します。

    dottest.configuration=user://Configuration Name

利用可能なテスト コンフィギュレーションの表示

利用可能なテスト コンフィギュレーションを出力するには、-listconfigs スイッチを使用します。  

ビルトイン テスト コンフィギュレーション

次の表は、[INSTALL]/configs/builtin ディレクトリにインストールされるビルトイン テスト コンフィギュレーションです。

静的解析

このグループには、汎用的な静的解析テスト コンフィギュレーションが含まれます。セキュリティ コーディング標準を推進するテスト コンフィギュレーションについては「セキュリティ コンプライアンス パック」を参照してください。

ビルトイン テスト コンフィギュレーション説明
Recommended Rules推奨ルールのデフォルト コンフィギュレーションです。重要度 1 および 2 の大部分のルールをカバーします。Flow Analysis Fast コンフィギュレーションのルールを含みます。 
Recommended .NET Core Rules.NET Core プロジェクトの重要度の高い問題を識別するルールを含みます。
Find Duplicated Code重複コードをレポートする静的コード解析ルールを適用します。重複コードは、アプリケーションの設計が適切でないことを表す可能性があり、保守性の問題につながる場合があります。
Metricsコード メトリクスを計測します。 
Flow Analysisテスト ケースやアプリケーションを実行せずに複雑な実行時エラーを検出します。検出されるエラーには、未初期化または無効なメモリの使用、null ポインター間接参照、配列およびバッファーのオーバーフロー、ゼロ除算、メモリおよびリソース リーク、デッド コードなどが含まれます。特別なFlow Analysis ライセンス オプションが必要です。
Flow Analysis Aggressive深いフロー解析を行うルールを含みます。このコンフィギュレーションの実行には、非常に長い時間がかかる可能性があります。
Flow Analysis Fast浅いフロー解析を行うルールを含みます。許容できる可能性があるエラーがレポートされるのを抑制します。
Critical Rules重要度 1 のルールの大部分および Flow Analysis Fast コンフィギュレーションのルールを含みます。  
Demoさまざまなコード解析技術をデモンストレーションするルールを含みます。大規模なコードの解析には適していない可能性があります。
Find Memory Issuesメモリ管理の問題を検出するルールを含みます。 
Find Unimplemented Scenarios未実装のシナリオを検出するためのルールが含まれます。  
Find Unused Code 未使用コード/デッド コードを検出するためのルールが含まれます。

Check Code Compatibility against .NET [2.0, 3.0, 3.5, 4.0 Client Profile, 4.0 Full, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8]

指定されたバージョンの .NET framework への互換性を検証するテスト コンフィギュレーションのセットが含まれます。 
IEC 62304 (Template) IEC 62304 医療規格を適用するためのテンプレート コンフィギュレーションです。  
Microsoft Managed Recommended Rulesマネージド コードの重要度の高い問題を識別する Microsoft Managed Recommended Rules を適用します。

セキュリティ コンプライアンス パック

このコンプライアンス パックには、セキュリティ コーディング標準およびプラクティスの推進に役立つテスト コンフィギュレーションが含まれています。標準がどのように dotTEST のルールにマッピングされているかについては、「コンプライアンス パックのルールのマッピング」を参照してください。

(info) コンプライアンス パックを使用するには、専用のライセンス機能を有効化する必要があります。ライセンスの詳細については、Parasoft 製品サポートにご連絡ください。

コンプライアンスの結果を DTP で表示する

このカテゴリの一部のテスト コンフィギュレーションには、対応する DTP の拡張機能があります。拡張機能を利用すると、セキュリティ コンプライアンスのステータスを参照したり、コンプライアンス レポートを生成したり、セキュリティ コンプライアンスのゴールに向けた進捗をモニターしたりできます。  利用可能な拡張機能の一覧、要件、使用方法については、DTP のマニュアルの「DTP の拡張」セクションを参照してください。

ビルトイン テスト コンフィギュレーション説明
CWE 3.4

CWE standard v3.4 で識別された問題を検出するルールを含みます。

(info) このテスト コンフィギュレーションは、Parasoft Compliance Pack ソリューションの一部です。DTP の Compliance 拡張機能を使用して業界標準へのコンプライアンスをモニターできます。

CWE Top 25 2019

CWE の Top 25 Most Dangerous Programming Errors として分類された問題を検出するルールを含みます。 

(info) このテスト コンフィギュレーションは、Parasoft Compliance Pack ソリューションの一部です。DTP の Compliance 拡張機能を使用して業界標準へのコンプライアンスをモニターできます。

CWE Top 25 + On the Cusp 2019

CWE の Top 25 Most Dangerous Programming Errors として分類された問題または CWE Weaknesses On the Cusp リストに含まれる問題を検出するルールを含みます。

(info) このテスト コンフィギュレーションは、Parasoft Compliance Pack ソリューションの一部です。DTP の Compliance 拡張機能を使用して業界標準へのコンプライアンスをモニターできます。

OWASP Top 10-2017

OWASP のセキュリティ脆弱性トップ 10 で識別された問題を検出するルールを含みます。

(info) このテスト コンフィギュレーションは、Parasoft Compliance Pack ソリューションの一部です。DTP の Compliance 拡張機能を使用して業界標準へのコンプライアンスをモニターできます。

PCI DSS 3.2PCI Data Security Standard v3.2 で識別された問題を検出するルールを含みます。
Security Assessmentセキュリティの問題を検出する一般的なテスト コンフィギュレーションです。
UL 2900UL-2900 標準で識別された問題を検出するルールを含みます。
Microsoft Secure Coding GuidelinesMicrosoft Secure Coding Guidelines を推進するルールを含みます。

単体テストおよびカバレッジの収集

このグループには、単体テストを実行し、カバレッジを収集するテスト コンフィギュレーションが含まれています。

ビルトイン テスト コンフィギュレーション説明
Run VSTest Tests解析スコープ内で検出された NUnit、MSTest、xUnit テストを実行します。
Run VSTest Tests with Coverage 解析スコープ内で検出された NUnit、MSTest、xUnit テストを実行し、カバレッジを計測します。
Run NUnit Tests1解析スコープ内で検出された NUnit テストを実行します。
Run NUnit Tests with Coverage1解析スコープ内で検出された NUnit テストを実行し、カバレッジを計測します。
Execute MSTests1MSTests テストを実行します。
Execute MSTests with Coverage1MSTests を実行し、カバレッジを収集します。
Calculate Application Coverageアプリケーション カバレッジ データを処理して coverage.xml ファイルを生成します。Web アプリケーションのアプリケーション カバレッジを参照してください。
Collect Static Coverageアプリケーション カバレッジに必要な静的カバレッジ データを生成します。Web アプリケーションのアプリケーション カバレッジを参照してください。

1 レガシーなテスト コンフィギュレーションです。Run VSTest Tests または Run VSTest Tests with Coverage を使ってテストを実行してください。

コンプライアンス パックのルールのマッピング

このセクションは、CWE 標準用のルール マッピングを示します。他の標準のマッピング情報は、コンプライアンス パックとともに提供される PDF ルール マッピング ファイルに記載されています。

CWE Top 25 のマッピング

CWE ID

CWE 名

Parasoft ルール ID

CWE-119

Improper Restriction of Operations within the Bounds of a Memory Buffer

  • CWE.119.ARRAY

CWE-79

Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

  • CWE.79.VPPD
  • CWE.79.TDRESP
  • CWE.79.TDXSS

CWE-20

Improper Input Validation

  • CWE.20.ARRAY
  • CWE.20.VPPD
  • CWE.20.TDNET
  • CWE.20.TDFNAMES
  • CWE.20.TDCMD
  • CWE.20.AUPS
  • CWE.20.TDRESP
  • CWE.20.TDXSS
  • CWE.20.TDSQL
  • CWE.20.TDSQLC

CWE-200

Information Exposure

  • CWE.200.SENS
  • CWE.200.PEO
  • CWE.200.ACPST
  • CWE.200.CSG

CWE-125

Out-of-bounds Read

  • CWE.125.ARRAY

CWE-89

Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')

  • CWE.89.TDSQL
  • CWE.89.TDSQLC

CWE-416

Use After Free

  • CWE.416.DISP
  • CWE.416.FIN

CWE-190

Integer Overflow or Wraparound

  • CWE.190.AIWIL
  • CWE.190.INTOVERF

CWE-352

Cross-Site Request Forgery (CSRF)

  • CWE.352.VPPD
  • CWE.352.TDRESP
  • CWE.352.VAFT

CWE-22

Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

  • CWE.22.TDFNAMES

CWE-78

Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')

  • CWE.78.TDCMD
  • CWE.78.AUPS

CWE-787

Out-of-bounds Write

  • CWE.787.ARRAY

CWE-287

Improper Authentication

  • CWE.287.AAM
  • CWE.287.UAAMC
  • CWE.287.LUAFLA
  • CWE.287.IIPHEU

CWE-476

NULL Pointer Dereference

  • CWE.476.NR
  • CWE.476.DEREF
  • CWE.476.CNFA

CWE-732

Incorrect Permission Assignment for Critical Resource

  • CWE.732.ADSVSP

CWE-434

Unrestricted Upload of File with Dangerous Type

  • CWE.434.TDFNAMES

CWE-611

Improper Restriction of XML External Entity Reference

  • CWE.611.PDTDP
  • CWE.611.USXRS

CWE-94

Improper Control of Generation of Code ('Code Injection')

N/A

CWE-798

Use of Hard-coded Credentials

  • CWE.798.HARDCONN
  • CWE.798.HPW

CWE-400

Uncontrolled Resource Consumption

  • CWE.400.LEAKS

CWE-772

Missing Release of Resource after Effective Lifetime

  • CWE.772.LEAKS

CWE-426

Untrusted Search Path

N/A

CWE-502

Deserialization of Untrusted Data

  • CWE.502.IIDC
  • CWE.502.UIS
  • CWE.502.IDC
  • CWE.502.MGODWSPA

CWE-269

Improper Privilege Management

N/A

CWE-295

Improper Certificate Validation

  • CWE.295.DNICV

CWE Weaknesses On the Cusp Mapping

CWE ID

CWE 名/説明

Parasoft ルール ID

CWE-835

Loop with Unreachable Exit Condition ('Infinite Loop')

  • CWE.835.IVFLC
  • CWE.835.IVFLI
  • CWE.835.NSIVFLN

CWE-522

Insufficiently Protected Credentials

N/A

CWE-704

Incorrect Type Conversion or Cast

  • CWE.704.ECLTS

CWE-362

Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')

  • CWE.362.LOCKSETGET
  • CWE.362.DIFCS

CWE-918

Server-Side Request Forgery (SSRF)

N/A

CWE-415

Double Free

N/A

CWE-601

URL Redirection to Untrusted Site ('Open Redirect')

  • CWE.601.TDNET

CWE-863

Incorrect Authorization

  • CWE.863.AAM
  • CWE.863.UAAMC
  • CWE.863.AUTH

CWE-862

Missing Authorization

  • CWE.862.UAA

CWE-532

Inclusion of Sensitive Information in Log Files

N/A

CWE-306

Missing Authentication for Critical Function

  • CWE.306.ADSVSP

CWE-384

Session Fixation

N/A

CWE-326

Inadequate Encryption Strength

  • CWE.326.ICA

CWE-770

Allocation of Resources Without Limits or Throttling

  • CWE.770.LEAKS

CWE-617

Reachable Assertion

N/A

CWE 3.4 のマッピング

CWE ID

CWE 名/説明

Parasoft ルール ID

CWE-20

Improper Input Validation

  • CWE.20.ARRAY
  • CWE.20.VPPD
  • CWE.20.TDNET
  • CWE.20.TDFNAMES
  • CWE.20.TDCMD
  • CWE.20.AUPS
  • CWE.20.TDRESP
  • CWE.20.TDXSS
  • CWE.20.TDSQL
  • CWE.20.TDSQLC

CWE-22

Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

  • CWE.22.TDFNAMES

CWE-77

Improper Neutralization of Special Elements used in a Command ('Command Injection')

  • CWE.77.TDCMD

CWE-78

Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')

  • CWE.78.TDCMD
  • CWE.78.AUPS

CWE-79

Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')

  • CWE.79.VPPD
  • CWE.79.TDRESP
  • CWE.79.TDXSS

CWE-80

Improper Neutralization of Script-Related HTML Tags in a Web Page (Basic XSS)

  • CWE.80.VPPD
  • CWE.80.TDRESP

CWE-88

Improper Neutralization of Argument Delimiters in a Command ('Argument Injection')

  • CWE.88.TDCMD
  • CWE.88.VPPD

CWE-89

Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')

  • CWE.89.TDSQL
  • CWE.89.TDSQLC

CWE-90

Improper Neutralization of Special Elements used in an LDAP Query ('LDAP Injection')

  • CWE.90.TDLDAP

CWE-99

Improper Control of Resource Identifiers ('Resource Injection')

  • CWE.99.TDFNAMES
  • CWE.99.TDNET

CWE-119

Improper Restriction of Operations within the Bounds of a Memory Buffer

  • CWE.119.ARRAY

CWE-120

Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')

  • CWE.120.AUK

CWE-125

Out-of-bounds Read

  • CWE.125.ARRAY

CWE-129

Improper Validation of Array Index

  • CWE.129.ARRAY

CWE-131

Incorrect Calculation of Buffer Size

  • CWE.131.AUK

CWE-134

Use of Externally-Controlled Format String

  • CWE.134.TDINPUT

CWE-190

Integer Overflow or Wraparound

  • CWE.190.AIWIL
  • CWE.190.INTOVERF

CWE-191

Integer Underflow (Wrap or Wraparound)

  • CWE.191.AIWIL
  • CWE.191.INTOVERF

CWE-197

Numeric Truncation Error

  • CWE.197.ECLSII

CWE-200

Information Exposure

  • CWE.200.SENS
  • CWE.200.PEO
  • CWE.200.ACPST
  • CWE.200.CSG

CWE-201

Information Exposure Through Sent Data

  • CWE.201.SELSPLAT

CWE-209

Information Exposure Through an Error Message

  • CWE.209.SENS
  • CWE.209.PEO
  • CWE.209.ACPST

CWE-212

Improper Cross-boundary Removal of Sensitive Data

  • CWE.212.CSG

CWE-250

Execution with Unnecessary Privileges

  • CWE.250.AUEP

CWE-252

Unchecked Return Value

  • CWE.252.RETVAL
  • CWE.252.CHECKRET

CWE-259

Use of Hard-coded Password

  • CWE.259.HPW

CWE-285

Improper Authorization

  • CWE.285.TDSQL

CWE-287

Improper Authentication

  • CWE.287.AAM
  • CWE.287.UAAMC
  • CWE.287.LUAFLA
  • CWE.287.IIPHEU

CWE-295

Improper Certificate Validation

  • CWE.295.DNICV

CWE-306

Missing Authentication for Critical Function

  • CWE.306.ADSVSP

CWE-307

Improper Restriction of Excessive Authentication Attempts

  • CWE.307.LUAFLA

CWE-316

Cleartext Storage of Sensitive Information in Memory

  • CWE.316.RSFSS
  • CWE.316.SSFP

CWE-326

Inadequate Encryption Strength

  • CWE.326.ICA

CWE-327

Use of a Broken or Risky Cryptographic Algorithm

  • CWE.327.ICA
  • CWE.327.DNCCKS
  • CWE.327.ACCA

CWE-328

Reversible One-Way Hash

  • CWE.328.ICA

CWE-329

Not Using a Random IV with CBC Mode

  • CWE.329.ACCA

CWE-330

Use of Insufficiently Random Values

  • CWE.330.USSCR

CWE-350

Reliance on Reverse DNS Resolution for a Security-Critical Action

  • CWE.350.IIPHEU

CWE-352

Cross-Site Request Forgery (CSRF)

  • CWE.352.VPPD
  • CWE.352.TDRESP
  • CWE.352.VAFT

CWE-362

Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')

  • CWE.362.LOCKSETGET
  • CWE.362.DIFCS

CWE-369

Divide By Zero

  • CWE.369.ZERO

CWE-391

Unchecked Error Condition

  • CWE.391.LGE

CWE-395

Use of NullPointerException Catch to Detect NULL Pointer Dereference

  • CWE.395.NCNRE

CWE-396

Declaration of Catch for Generic Exception

  • CWE.396.NCSAE

CWE-397

Declaration of Throws for Generic Exception

  • CWE.397.NTSAE

CWE-400

Uncontrolled Resource Consumption

  • CWE.400.LEAKS

CWE-401

Missing Release of Memory after Effective Lifetime

  • CWE.401.DBDTFF
  • CWE.401.DCDSF
  • CWE.401.DCID
  • CWE.401.DDFODB
  • CWE.401.SRIF
  • CWE.401.TICUFDS
  • CWE.401.TIID
  • CWE.401.CBDM
  • CWE.401.IDWF
  • CWE.401.MDPP
  • CWE.401.ASC

CWE-402

Transmission of Private Resources into a New Sphere ('Resource Leak')

  • CWE.402.CSG

CWE-412

Unrestricted Externally Accessible Lock

  • CWE.412.NLT

CWE-416

Use After Free

  • CWE.416.DISP
  • CWE.416.FIN

CWE-434

Unrestricted Upload of File with Dangerous Type

  • CWE.434.TDFNAMES

CWE-456

Missing Initialization of a Variable

  • CWE.456.NOTEXPLINIT

CWE-457

Use of Uninitialized Variable

  • CWE.457.NOTEXPLINIT

CWE-470

Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection')

  • CWE.470.TDRFL

CWE-476

NULL Pointer Dereference

  • CWE.476.NR
  • CWE.476.DEREF
  • CWE.476.CNFA

CWE-480

Use of Incorrect Operator

  • CWE.480.PUO

CWE-481

Assigning instead of Comparing

  • CWE.481.AWC

CWE-494

Download of Code Without Integrity Check

  • CWE.494.IREC

CWE-499

Serializable Class Containing Sensitive Data

  • CWE.499.CSG

CWE-502

Deserialization of Untrusted Data

  • CWE.502.IIDC
  • CWE.502.UIS
  • CWE.502.IDC
  • CWE.502.MGODWSPA

CWE-546

Suspicious Comment

  • CWE.546.TODO

CWE-561

Dead Code

  • CWE.561.UC

CWE-563

Assignment to Variable without Use

  • CWE.563.POVR
  • CWE.563.VOVR

CWE-570

Expression is Always False

  • CWE.570.CC

CWE-571

Expression is Always True

  • CWE.571.CC

CWE-595

Comparison of Object References Instead of Object Contents

  • CWE.595.REVT

CWE-601

URL Redirection to Untrusted Site ('Open Redirect')

  • CWE.601.TDNET

CWE-611

Improper Restriction of XML External Entity Reference

  • CWE.611.PDTDP
  • CWE.611.USXRS

CWE-613

Insufficient Session Expiration

  • CWE.613.ISE

CWE-662

Improper Synchronization

  • CWE.662.DIFCS

CWE-676

Use of Potentially Dangerous Function

  • CWE.676.APDM

CWE-681

Incorrect Conversion between Numeric Types

  • CWE.681.ECLTS

CWE-704

Incorrect Type Conversion or Cast

  • CWE.704.ECLTS

CWE-732

Incorrect Permission Assignment for Critical Resource

  • CWE.732.ADSVSP

CWE-759

Use of a One-Way Hash without a Salt

  • CWE.759.SALT

CWE-760

Use of a One-Way Hash with a Predictable Salt

  • CWE.760.SALT

CWE-770

Allocation of Resources Without Limits or Throttling

  • CWE.770.LEAKS

CWE-772

Missing Release of Resource after Effective Lifetime

  • CWE.772.LEAKS

CWE-780

Use of RSA Algorithm without OAEP

  • CWE.780.UOWR

CWE-787

Out-of-bounds Write

  • CWE.787.ARRAY

CWE-798

Use of Hard-coded Credentials

  • CWE.798.HARDCONN
  • CWE.798.HPW

CWE-807

Reliance on Untrusted Inputs in a Security Decision

  • CWE.807.AUTH

CWE-827

Improper Control of Document Type Definition

  • CWE.827.PDTDP

CWE-829

Inclusion of Functionality from Untrusted Control Sphere

  • CWE.829.DMSC
  • CWE.829.ADLL

CWE-833

Deadlock

  • CWE.833.ORDER

CWE-835

Loop with Unreachable Exit Condition ('Infinite Loop')

  • CWE.835.IVFLC
  • CWE.835.IVFLI
  • CWE.835.NSIVFLN

CWE-838

Inappropriate Encoding for Output Context

  • CWE.838.AIHUE

CWE-862

Missing Authorization

  • CWE.862.UAA

CWE-863

Incorrect Authorization

  • CWE.863.AAM
  • CWE.863.UAAMC
  • CWE.863.AUTH

カスタム ルールの作成

カスタム ルールを作成するには、RuleWizard を使用します。RuleWizard の機能と使用方法については「RuleWizard User Guide」を参照してください。

ルールを使用するには、テスト コンフィギュレーションでルールを有効化し、カスタム ルール ファイルを以下のどちらかのディレクトリに配置する必要があります。

  • [INSTALL_DIR]\rules\user\
  • [DOCUMENTS DIR]\Parasoft\[tool_name]\rules [DOCUMENTS DIR] は Windows の "My Documents" ディレクトリを指します。

  • No labels