目次

QTE ユーザーマニュアル(R3.1.0.0)

Text Language

Figure/Search Language

しおり/章番号

10. 機能詳細(VSCode連携機能)

10.1 利用環境の準備

10.1.1 VSCode起動前の準備

10.1.2 VSCode起動後の準備

10.1.3 想定するVSCode連携機能の使い方

10.2 画面全体構成

10.2.1 アクティビティバー

10.2.2 サイドバー

10.2.3 エディタ

10.2.4 パネル

10.2.5 ステータスバー

10.3 初期設定手順

10.3.1 HTMLテストレポートファイルの追加、削除、設定内容変更

10.3.2 カバレッジ結果表示対象ファイルの設定

10.3.3 カバレッジ種別(Branch、MC/DC)の設定

10.3.4 設定内容の保存とキャンセル

10.4 カバレッジレポート一覧画面

10.4.1 画面タイトル部

10.4.2 カバレッジレポート一覧

10.4.3 カバレッジレポート毎の設定

10.5 テスト対象ファイル一覧画面

10.5.1 画面タイトル部

10.5.2 テスト対象ファイル一覧

10.6 エディタ上での操作

10.6.1 ハイライト表示

10.6.2 論理組み合わせ表を表示

10.6.3 ソースコードを編集する時はVSCode連携機能を有効化する

10.7 論理組み合わせ表画面

10.7.1 論理組み合わせ表

10.7.2 テストケース表示

10.8 メッセージ出力画面

10.8.1 出力タブへのログメッセージ出力

10.8.2 ターミナルタブへのコマンド実行ログ出力

10.9 ステータスバー表示

10.9.1 ライセンス取得状況の表示

10.9.2 動作状況の表示

10.10 VSCode連携機能で使用するライセンス

10.10.1 ライセンスの取得と解放

10.10.2 VSCode連携機能の各画面操作・表示で使用するライセンス

13. Appendix - B(サポート対象外特記事項)

13.1 C/C++言語に関するサポート対象外事項

13.1.1 デフォルト引数中の論理式

13.1.2 noexcept演算子

13.1.3 ラムダ式の初期化キャプチャに指定した論理式

13.1.4 定数式を示すconstexprで修飾された関数

13.1.5 テンプレート関数内のジェネリックラムダ

13.1.6 条件式中の変数宣言/関数コール

13.1.7 プレインクルードヘッダファイルに関連するビルドエラー

13.1.8 ヘッダファイルのインクルードに関連するビルドエラー

13.1.9 テスト対象関数が無名名前空間に含まれる場合

13.1.10 コンパイラ固有の記述が含まれる場合

13.1.11 テンプレート/無名クラス

13.1.12 非型テンプレート引数

13.1.13 テンプレート/ローカル定義

13.1.14 引数にテンプレート引数型の変数定義がないテンプレート関数

13.1.15 テンプレート/エイリアステンプレート(C++11)/引数/戻り値

13.1.16 テンプレート/ラムダ式

13.1.17 テンプレート/typedef/using

13.1.18 テンプレート/オペレータ関数

13.1.19 テンプレート/decltype(C++11)

13.1.20 可変引数

13.1.21 テンプレート/部分特殊化

13.1.22 テンプレート/デフォルトテンプレート引数

13.1.23 テンプレート/コンストラクタ

13.1.24 静的領域の初期化時にのみ呼び出される関数

13.1.25 テンプレート/friend宣言/関数定義

13.1.26 グローバル定義の無名クラス

13.1.27 グローバル定義のジェネリックラムダ/ラムダ式

13.1.28 無名クラスに含まれる関数

13.1.29 テンプレートクラス内で1ソース行に同名で複数定義されたテンプレートメンバ関数

13.1.30 レポートに一部結果が表示されないサポート対象外事項

13.2 サポート対象外C/C++構文検出機能

13.2.1 検出するサポート対象外C/C++構文

13.2.2 該当構文検出時の動作(停止/動作継続)切替オプション

13.3 ファイル構造に関するサポート対象外事項

13.3.1 異なるインクルードディレクトリでの同名のヘッダファイルの使用

13.3.2 異なるソースファイルでの同じdefineマクロの使用

13.3.3 Makefileでのリンク順序の注意点(機能安全カバレッジモード)

13.4 特定コンパイラのサポート対象外文法

13.4.1 ARM compiler(armclang)、Native Clang

13.4.2 QNX SDP 7.1(QCC 8.3.0)

13.4.3 ARM compiler(armclang)、Native Clang 18.1.3/14.0.0/12.0.0

13.5 Google Testに関連するサポート対象外事項

13.5.1 マルチスレッドで動作するGoogle Testマクロ

13.5.2 HTMLレポートに出力できないGoogleTestマクロ

13.5.3 未割当の領域が指定されているポインタの使用

13.5.4 Google Test APIクラス型引数に関する注意点

13.5.5 ストリーム出力演算子を定義する場合の注意点

13.5.6 配列型/ポインタ型をGoogleTest APIに使用する場合の注意点

13.5.7 特定の型の浮動小数点値比較の注意点

13.6 マルチスレッドテストに関連するサポート対象外事項

13.6.1 QNXをMPUターゲット環境に使用する場合

13.7 GCCカバレッジ計測に関連するサポート対象外事項

13.7.1 カバレッジ率の合計が100%を超える場合

13.7.2 特定のラムダ式のラインカバレッジ

13.7.3 関数templateまたはautoを使用した関数のソース表示

13.7.4 特定のソースコードのgaiocovファイル出力

16. Appendix - E(その他)

16.1 ユーザー定義スクリプト

16.1.1 ユーザー定義スクリプト内で利用可能な変数

16.2 ユーザーソース同期スクリプト

16.2.1 ユーザーソース同期スクリプトの変更

16.3 QTEでサポートするGoogle Testマクロ・API

16.4 QTEとクロスコンパイラの事前定義マクロ

16.4.1 事前定義マクロの相互影響による誤動作

16.4.2 誤動作発生時の対処方法

16.5 QTE構成管理対象ファイル

16.6 ターゲットへのSSH/SCP接続時のオプション指定

16.7 ターゲット環境で利用するシェルと実行パスの設定

16.8 テスト実行バイナリ実行時の環境変数設定

16.9 テスト実行バイナリへの引数指定

16.10 Dockerコンテナでのライセンスサービス

16.10.1 ライセンスサービス起動・終了・状態確認

16.10.2 ライセンスサービス自動起動設定

16.11 QTE実行環境とビルド環境が分かれている場合の運用方法

16.11.1 環境例

16.11.2 QTEの実行手順

16.12 Google Testドライバーを使用しないテスト

16.12.1 使用する実行モード

16.12.2 オプション指定方法

16.12.3 テストレポートへの結果出力

16.13 テスト対象状態の同一性チェック機能

16.13.1 テスト対象状態の把握方法

16.13.2 実行レポート生成時の同一性チェック

16.13.3 統合レポート生成時の同一性チェック

16.13.4 同一性チェック機能関連オプション設定

16.13.5 本機能使用時の注意事項

16.14 QTEの"build"コマンドを使用せずビルドを行う方法

16.14.1 テスト実行バイナリファイルの準備

16.14.2 テスト実行バイナリファイルの配置

16.15 QTEに関するツール技術情報

 

このページの目次

9.6 ビルドシステム設定手順

9.6.1 QTE用ビルド設定

9.6.1.1 ビルド設定テンプレートファイル

9.6.1.2 ビルド設定の容易化(マクロ機能)

9.6.1.3 設定例

9.6.1.3.1 Makeの場合

9.6.1.3.2 CMakeの場合

9.7 テスト実行前の準備

9.7.1 ソースファイルの配置

9.7.2 ビルドを実行するディレクトリ

9.7.2.1 機能安全カバレッジモード使用時

9.7.2.2 GCCカバレッジモード使用時

9.7.3 testbinbuild.shの編集

9.7.3.1 Makeの場合

9.7.3.2 CMakeの場合

9.7.4 コンパイラ最適化オプションの注意点


9.6 ビルドシステム設定手順

本章では、QTEを用いたテストを実行するために必要となる、ビルドシステムへの設定追加、ビルド手順、および関連する注意事項について解説します。

9.6.1 QTE用ビルド設定

QTEの機能を利用するには、ユーザーが使用する既存のビルド設定(例: Makefile, CMakeLists.txt)に、QTE所定のビルドオプションやライブラリのリンク処理を組み込む必要があります。

9.6.1.1 ビルド設定テンプレートファイル

ビルド設定を簡素化するため、QTEでは専用のテンプレートファイルを準備しています。これらのファイルは"prepare"コマンド実行時にビルドディレクトリ (*1) へ出力されます。(*2)

これらのファイルを各ビルド設定ファイルにインクルードすることで、QTEの利用に必要なビルド設定を容易化することができます。

  1. *1: ビルドディレクトリの詳細に関しては、「9.3.3.1 プロファイルディレクトリの構成」をご参照ください。
  2. *2: オプション"qte-api-libfile-path"が設定されていない場合、これらのテンプレートファイルは生成されません。オプション"qte-api-libfile-path"の詳細に関しては、「9.4.9 ビルド設定(build.json)」をご参照ください。

9.6.1.2 ビルド設定の容易化(マクロ機能)

テンプレートファイルをインクルードすることにより、コンパイルオプションやリンクフラグなどの追加を容易にするためのマクロが利用可能となります。

以下は、QTEが準備するマクロとその機能の一覧です。

Table: QTEで追加が必要なMakefileオプション一覧

マクロ 機能概要
QTE_SRC_FLAGS カバレッジ計測に必要なビルドオプションを自動で追加するマクロです。本マクロを記述すると、以下のように動作します。

• GCCカバレッジモード使用時:
GCCのカバレッジ機能を有効にするための"-coverage"オプションが指定されます。さらに、最適化をOFFにするための"-O0"オプションが指定されます。

• 機能安全カバレッジモード使用時:
オプション"execution-mode"が"1"または"3"の場合:
"-I"オプションが指定され、カバレッジ計測に必要なインクルードディレクトリパスが自動的に指定されます。さらに、最適化をOFFにするための"-O0"オプションが指定されます。

オプション"execution-mode"が"99"の場合:
このマクロを記述しても何も指定されません。
QTE_API 本マクロをテスト対象実行バイナリのリンク箇所に記述することで、QTEでテスト実行に必要なライブラリが自動追加されます。
QTE_LINK_FLAGS 本マクロをテスト対象実行バイナリのリンク箇所に追加することで、カバレッジ計測に必要なリンクオプションが自動追加されます。

• GCCカバレッジ動作時:
GCCのカバレッジ機能を有効にするための"-coverage"オプションが指定されます。

• 機能安全カバレッジ動作時:
このマクロを記述しても何も指定されません。

*1: Google Test出力値をレポート出力するためのオプション "QTE_GTEST_FLAGS"は、 QTE R1.2.0以前では設定が必要でしたが、QTE R1.3.0以降では省略可能に変更されました。

9.6.1.3 設定例

9.6.1.3.1 Makeの場合
1. 既存ビルド設定のバックアップ

ユーザが作成したMake設定に修正を加える前に、既存のビルド設定ファイル(Makefile)をバックアップします。

コマンド実行例

$ cp Makefile Makefile.bak

2. マクロ機能を利用したビルド設定の追加

マクロ機能を利用して、QTE用のコンパイルオプション、リンクオプションを追加します。

ビルド設定ファイル(Makefile)に下記の修正を行います。

ビルド設定の追加例

Makefileの設定例を以下に示します。

# For QTE Setting
include ../qte.make

CXX := g++-9
TARGET := DEMO_GAIO_GCC_COV
CXXFLAGS := -std=c++14
LDLIBS := /lib/x86_64-linux-gnu/libpthread.so.0

GTEST_DIR      := ../../googletest-release-1.8.0/googletest
GTEST_INC_PATH := -I$(GTEST_DIR) -isystem $(GTEST_DIR)/include
GTEST_HEADERS  := $(GTEST_DIR)/include/gtest/*.h \
                  $(GTEST_DIR)/include/gtest/internal/*.h

GTEST_SRCS_ := $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS)

debug: CXXFLAGS += -O0
debug: $(TARGET)

release: CXXFLAGS += -O3
release: $(TARGET)

# Make Google Test Libraries
gtest-all.o : $(GTEST_SRCS_)
    $(CXX) -std=c++14 $(GTEST_INC_PATH) -pthread -c $(GTEST_DIR)/src/gtest-all.cc
gtest.a : gtest-all.o
    $(AR) $(ARFLAGS) $@ $^

gtest_main.o : $(GTEST_SRCS_)
    $(CXX) -std=c++14 $(GTEST_INC_PATH) -c $(GTEST_DIR)/src/gtest_main.cc
gtest_main.a : gtest-all.o gtest_main.o
    $(AR) $(ARFLAGS) $@ $^

# Make Test Driver
myGoogleTest.o : myGoogleTest.cpp
    $(CXX) -std=c++14 $(GTEST_INC_PATH) -pthread -c -o $@ $^

# Make Coverage Target
myApp.o : myApp.cpp
    $(CXX) $(CXXFLAGS) $(QTE_SRC_FLAGS) -c -o $@ $^

# Make Test Target
$(TARGET): myApp.o myGoogleTest.o gtest.a gtest_main.a $(QTE_API)
    $(CXX) -std=c++14 $(QTE_LINK_FLAGS) -o $@ $^ $(LDLIBS)

clean:
    rm -f $(TARGET)
    rm -f ./*.a
    rm -f ./*.o

*1 : コンパイラにGCC9.4を使用した場合

foreachの様なMakefile関数を使用している場合の注意点

SOURCES = $(foreach dir, $(SRCDIRS), $(wildcard $(dir)/*.cpp))

上記のような形式でディレクトリ配下のソースをまとめて指定しており、1ソースごとのコンパイルルールを指定していない場合、以下のようにCXXFLAGSにQTE用のオプションを加えてください。

テスト対象ソースのコンパイルルールがない場合:

CXXFLAGS+=$(QTE_SRC_FLAGS)

9.6.1.3.2 CMakeの場合
1. 既存ビルド設定のバックアップ

ユーザが作成したCMake設定に修正を加える前に、既存のビルド設定ファイル(CMakeList.txt)をバックアップします。

コマンド実行例

$ cp CMakeList.txt CMakeList.txt.bak

2. マクロ機能を利用したビルド設定の追加

マクロ機能を利用して、QTE用のコンパイルオプション、リンクオプションを追加します。

ビルド設定ファイル(CMakeList.txt)に下記の修正を行います。

*1: 「VSCode連携機能」の詳細については、「10. 機能詳細(VSCode連携機能)」を参照してください。

ビルド設定の追加例

CMakeList.txtの設定例を以下に示します。

# Project properties
cmake_minimum_required(VERSION 3.5)
project(DEMO_GAIO_GCC_COV)
set(CMAKE_VERBOSE_MAKEFILE ON)

# Include qte.cmake file
include(../../qte.cmake)

# Include path settings
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../googletest-release-1.8.0/googletest/include")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../../googletest-release-1.8.0/googletest")

#include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../..")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src")

# Build Gtest lib
add_library(gtest STATIC ${CMAKE_CURRENT_SOURCE_DIR}/../../googletest-release-1.8.0/googletest/src/gtest-all.cc)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/../../googletest-release-1.8.0/googletest/src/gtest-all.cc PROPERTIES COMPILE_FLAGS "-pthread") 
add_library(gtest_main STATIC ${CMAKE_CURRENT_SOURCE_DIR}/../../googletest-release-1.8.0/googletest/src/gtest_main.cc)

# Build Test target executable
add_library(my_app STATIC ${CMAKE_CURRENT_SOURCE_DIR}/myApp.cpp)
target_compile_options(my_app PUBLIC ${QTE_SRC_FLAGS})
target_compile_options(my_app PUBLIC -fmacro-prefix-map=${CMAKE_CURRENT_SOURCE_DIR}=.)

# Target executable build
add_executable(DEMO_GAIO_GCC_COV ${CMAKE_CURRENT_SOURCE_DIR}/myGoogleTest.cpp)
target_link_libraries(DEMO_GAIO_GCC_COV gtest gtest_main my_app ${QTE_API} /lib/x86_64-linux-gnu/libpthread.so.0)

9.7 テスト実行前の準備

本章では、QTEの"build"コマンドを利用してテスト実行オブジェクトをビルドする場合に必要な準備について説明します。

9.7.1 ソースファイルの配置

テスト対象ソース一式、Google Test ドライバーソースをワークスペース直下の "source"ディレクトリに配置します。ワークスペース外に配置したソースファイル(*)についても、テスト対象とすることができます。 このディレクトリに格納したテスト対象ソース一式、Google Testドライバーソースは、"source"ディレクトリからの相対パスにより、ビルド可能である必要があります。

* ワークスペース外にソースファイル配置するためのオプション"external-source-dir"については、「9.4.6 ワークスペース設定(workspace.json)」を参照してください。

9.7.2 ビルドを実行するディレクトリ

9.7.2.1 機能安全カバレッジモード使用時

機能安全カバレッジモードでは、"prepare"コマンド実行時に、QTEプロファイルディレクトリ直下の"source"ディレクトリにカバレッジ計測コード一式を生成します。そのため、QTEプロファイルディレクトリ直下の"source"ディレクトリ内で、ビルドを実施する必要があります。

9.7.2.2 GCCカバレッジモード使用時

GCCカバレッジモードでは、ワークスペース直下の "source"ディレクトリ内でビルドを実施します。ただし、オプション"external-source-dir"を使用して、他のディレクトリを指定している場合には、指定したディレクトリ内で、ビルドを実施します。

9.7.3 testbinbuild.shの編集

"build"コマンド実行時にtestbinbuild.shが実行されます。下記にtestbinbuild.shの例を示します。

9.7.3.1 Makeの場合

#!/bin/bash
#------------------------------------------------------------------------------
#
# File Name  : testbinbuild.sh
# Summary    : This script is called by the 'qte-cov build' command.
# Usage      :
#     By writing processes in this script file, you can execute user-specific
#     processes during the execution of the qte-cov command. For more details
#     on how to write in this file, please refer to the user manual.
#------------------------------------------------------------------------------
# Do not change the following six lines.
EXECUTION_MODE=$1
WORKSPACE=$2
PROJECT=$3
PROFILE=$4
EXTERNAL_SOURCE_DIR=$5
BUILD_DIR=$6

cd $BUILD_DIR/GA/src       <-- ビルドディレクトリへ移動
make all -f Makefile_qte   <-- ビルド実行

9.7.3.2 CMakeの場合

#!/bin/bash
#------------------------------------------------------------------------------
#
# File Name  : testbinbuild.sh
# Summary    : This script is called by the 'qte-cov build' command.
# Usage      :
#     By writing processes in this script file, you can execute user-specific
#     processes during the execution of the qte-cov command. For more details
#     on how to write in this file, please refer to the user manual.
#------------------------------------------------------------------------------
# Do not change the following six lines.
EXECUTION_MODE=$1
WORKSPACE=$2
PROJECT=$3
PROFILE=$4
EXTERNAL_SOURCE_DIR=$5
BUILD_DIR=$6

rm -rf ${BUILD_DIR}/GA/src/build    <-- クリーン
mkdir ${BUILD_DIR}/GA/src/build     <-- ビルドディレクトリ作成
cd ${BUILD_DIR}/GA/src/build        <-- ビルドディレクトリへ移動
cmake ..                            <-- ビルドシステムの生成
cmake --build .                     <-- ビルド実行

9.7.4 コンパイラ最適化オプションの注意点

機能安全カバレッジモードで、カバレッジ計測用コードを自動挿入したソースコードをビルドする際には、コンパイラの最適化オプションはOFFにしてください。最適化を適用してビルドを行った場合には、以下のような事象が発生することがあります。

ビルド設定の容易化のマクロ「QTE_SRC_FLAGS」を使用している場合は、自動的にコンパイラの最適化オプションをOFFにするコンパイルオプションが追加されます。詳細は、「9.6.1.2 ビルド設定の容易化(マクロ機能)」を参照してください。



(c)2020-2025 GAIO TECHNOLOGY All rights reserved