Python 3 へのマイグレーション
Perforce QAC(v3.1.0/2021.3)内部で使用している、Python 2 がPython 3にアップグレードされました。
これ以前のバージョンのPerforce QAC を使用して生成されたプロジェクトまたは、CCTはCIP生成スクリプトをアップグレードしないと正しく機能しません。無効なCIPスクリプトを使用したときの典型的な出力の例を以下に示します。
$ qacli analyze -f -P .
QAC が以下のコマンドを発しました:
C:\Users\Morpheus\AppData\Local\Perforce\QAC-2025.2\samples\sample_inspect_c-2021.2\prqa\configs\Initial\config\DATA\QAC_Generic_C\Script\QAC_Generic_C.py
しかしコマンドは失敗しました。
Exit Code: 1 (0x1)
C:\Users\Morpheus\AppData\Local\Perforce\QAC-2025.2\samples\sample_inspect_c-2021.2\src\inspect.c:qac:23:1:0
Progress(File-based Analysis): ................................... done
成功 0 、失敗 1
詳細については以下のログを参照してください:
C:\Users\Morpheus\AppData\Local\Perforce\QAC-2025.2\app\logs\QAC_20211122T13281583_17040.log
さらに、ログファイルに以下のスクリプトがある場合は、Python 2 スクリプトが使用されていることを示しています。
13:39:38.237 30932 QAF.debug: PRQA::QAAPI::QAUtils::startProcess: === import dircache
13:39:38.237 30932 QAF.debug: PRQA::QAAPI::QAUtils::startProcess: === ModuleNotFoundError: No module named 'dircache'
必要に応じて既存のプロジェクトをPython 3 で使用できるようアップグレードするかまたは、既存のCCTを Python 3 に対応するようアップグレードしてください(CCTをアップグレードすると以降のプロジェクトの生成に使用されます)。
プロジェクトのアップグレード
一番簡単にプロジェクトをアップグレードする方法は、次のセクション(「upgrade コマンド」)で説明されているようにqacli project upgrade
コマンドを使用することです。
このコマンドは、プロジェクトのコンポーネントのバージョンをアップデートし、さらにCIP生成スクリプトをPython 3にアップグレードします。
CCTのアップグレード
スタンドアロンのPythonスクリプト update_to_py3.py
を使用して手動でプロジェクトまたは、CCTをアップデートすることもできます。
このスクリプトは、作業中のプロジェクトまたは CCT が存在するディレクトリおよび、サブディレクトリ内のすべてのPythonファイルをアップデートします。
このスクリプトはさらに、qaf.py、cygpathHandler.py、gnu_gcc.py、msvc.py、QAC_Generic_C++.py、QAC_Generic_C.py
などの変更されたファイルもPython 3にアップデートします。
カレントディレクトリ内のプロジェクトを変換するのに製品内のPythonを使用することもできます。例を示します。
C:\Perforce\QAC-2025.2\components\python-3.9.6\python.exe
C:\Perforce\QAC-2025.2\scripts\update_to_py3.py my_old_project
置換
C:\Temp\my_old_project\prqa\configs\Initial\config\DATA\core_qaf\qaf.py
置換
C:\Temp\my_old_project\prqa\configs\Initial\config\DATA\QAC_Generic_C\Script\QAC_Generic_C.py