Files
qt5-legatus-legacy/qav/createPrqaXmls200.py
2026-08-13 18:33:10 +02:00

123 lines
6.4 KiB
Python
Executable File

import fileinput
import glob
import inspect
import os
import shutil
import subprocess
import sys
import ntpath
# acf, vcf, qcf gibt es nicht mehr
def createPrqaProjectXML (qafProjectXML, cctfileCpp, cctfileC, includeOptionSyntax, defineOptionSyntax, excludedSourceDirs, buildRoot, qafConfigFolder):
print( "######################################################")
print( "## CREATE PROJECT XML FILE AT " + qafProjectXML)
print( "######################################################")
if os.path.isfile(qafProjectXML):
os.remove(qafProjectXML)
qafProjectXML = open( qafProjectXML, "w")
qafProjectXML.write( "<?xml version='1.0' encoding='UTF-8'?>\n")
qafProjectXML.write( "<prqaproject xmlversion=\"2.1.0\" qafversion=\"2.1.1\">\n")
qafProjectXML.write( " <!-- Config file information... -->\n")
qafProjectXML.write( " <configuration>\n")
qafProjectXML.write( " <root_paths>\n")
qafProjectXML.write( ' <root_path path="${PROJECT_ROOT}" name="SOURCE_ROOT"/>\n')
qafProjectXML.write( " </root_paths> \n")
qafProjectXML.write( " <languageFamily name=\"C_CPP\"/>\n")
qafProjectXML.write( " <baselinedSourceRoot baseline=\"OFF\"/>\n")
qafProjectXML.write( " <baselineSnapshot id=\"\" name=\"\" date=\"\"/>\n")
qafProjectXML.write( " <processMonitor>\n")
qafProjectXML.write( " <includeOptionSyntax>\n")
for includeOptionItem in includeOptionSyntax: ### VARIABLE FOREACH
qafProjectXML.write( " <option string=\""+includeOptionItem+"\"/>\n")
qafProjectXML.write( " </includeOptionSyntax>\n")
qafProjectXML.write( " <defineOptionSyntax>\n")
for defineOptionItem in defineOptionSyntax: ### VARIABLE FOREACH
qafProjectXML.write( " <option string=\""+defineOptionItem+"\"/>\n")
qafProjectXML.write( " </defineOptionSyntax>\n")
qafProjectXML.write( " <settingsOptionSyntax>\n")
qafProjectXML.write( " <option compiler=\"Visual Studio\" string=\"@\" quotes_escaped=\"yes\" extension=\"rsp\"/>\n")
qafProjectXML.write( " <option compiler=\"Windriver\" string=\" -@\" quotes_escaped=\"yes\" extension=\"\"/>\n")
qafProjectXML.write( " <option compiler=\"Greenhills\" string=\"--Via\" quotes_escaped=\"yes\" extension=\"__i\"/>\n")
qafProjectXML.write( " </settingsOptionSyntax>\n")
qafProjectXML.write( " <excludeStrings/>\n")
if len(excludedSourceDirs):
qafProjectXML.write( " <fileFilterStrings>\n")
for excludedSourceItem in excludedSourceDirs: ### VARIABLE FOREACH
qafProjectXML.write( " <option string=\""+excludedSourceItem+"\"/>\n")
qafProjectXML.write( " </fileFilterStrings>\n")
else:
qafProjectXML.write( " <fileFilterStrings/>\n")
qafProjectXML.write( " </processMonitor>\n")
qafProjectXML.write( " <suppressIncludes active=\"yes\"/>\n")
qafProjectXML.write( ' <acf name="project.acf"/>\n')
qafProjectXML.write( ' <rcf name="project.rcf"/>\n')
qafProjectXML.write( " <ccts>\n")
qafProjectXML.write( " <cct target=\"C\" active=\"yes\" name=\""+ntpath.basename(cctfileC)+"\"/>\n") ### VARIABLE
qafProjectXML.write( " <cct target=\"C++\" active=\"yes\" name=\""+ntpath.basename(cctfileCpp)+"\"/>\n") ### VARIABLE
qafProjectXML.write( " </ccts>\n")
qafProjectXML.write( ' <messages name="%s"/>\n' % os.path.join(qafConfigFolder, 'user_library/user_messages/messages.xml' ))
qafProjectXML.write( " </configuration>\n")
qafProjectXML.write( " <!-- Mapping of extension to target_language... -->\n")
qafProjectXML.write( " <file_extensions>\n")
qafProjectXML.write( " <language target=\"C\">\n")
qafProjectXML.write( " <extension ext=\".c\"/>\n")
qafProjectXML.write( " </language>\n")
qafProjectXML.write( " <language target=\"C\">\n")
qafProjectXML.write( " <extension ext=\".C\"/>\n")
qafProjectXML.write( " </language>\n")
qafProjectXML.write( " <language target=\"C++\">\n")
qafProjectXML.write( " <extension ext=\".cpp\"/>\n")
qafProjectXML.write( " </language>\n")
qafProjectXML.write( " <language target=\"C++\">\n")
qafProjectXML.write( " <extension ext=\".cxx\"/>\n")
qafProjectXML.write( " </language>\n")
qafProjectXML.write( " <language target=\"C++\">\n")
qafProjectXML.write( " <extension ext=\".cc\"/>\n")
qafProjectXML.write( " </language>\n")
qafProjectXML.write( " <language target=\"C++\">\n")
qafProjectXML.write( " <extension ext=\".CPP\"/>\n")
qafProjectXML.write( " </language>\n")
qafProjectXML.write( " <language target=\"C++\">\n")
qafProjectXML.write( " <extension ext=\".CXX\"/>\n")
qafProjectXML.write( " </language>\n")
qafProjectXML.write( " <language target=\"C++\">\n")
qafProjectXML.write( " <extension ext=\".CC\"/>\n")
qafProjectXML.write( " </language>\n")
qafProjectXML.write( " </file_extensions>\n")
qafProjectXML.write( " <!-- Files in project... -->\n")
qafProjectXML.write( " <files>\n")
qafProjectXML.write( " <!-- Explicit files... -->\n")
qafProjectXML.write( " </files>\n")
qafProjectXML.write( "</prqaproject>\n")
def createACF(acfFile, additionalIncludeDirs, excludedIncludeDirs, analysisDefinitions):
print( "######################################################")
print( "## CREATE ACF FILE AT " + acfFile)
print( "######################################################")
if os.path.isfile(acfFile):
os.remove(acfFile)
acfFileWrite = open( acfFile, "w")
acfFileWrite.write( '<?xml version="1.0" encoding="UTF-8"?>\n')
acfFileWrite.write( '<acf xmlversion="2.0.0">\n')
acfFileWrite.write( ' <components>\n')
acfFileWrite.write( ' <component version="9.1.1" target="C" name="qac"/>\n')
acfFileWrite.write( ' <component version="4.1.0" target="C++" name="qacpp"/>\n')
acfFileWrite.write( ' </components>\n')
acfFileWrite.write( ' <component_settings>\n')
acfFileWrite.write( ' <input_to version="4.1.0" target="C++" component="qacpp">\n')
for additionalIncludeItem in additionalIncludeDirs:
acfFileWrite.write( ' <option argument="' + additionalIncludeItem + '" name="-i"/>\n')
for excludedIncludeItem in excludedIncludeDirs:
acfFileWrite.write( ' <option argument="' + excludedIncludeItem + '" name="-quiet"/>\n')
for analysisDefinitionItem in analysisDefinitions:
acfFileWrite.write( ' <option argument="' + analysisDefinitionItem + '" name="-d"/>\n')
acfFileWrite.write( ' </input_to>\n')
acfFileWrite.write( ' </component_settings>\n')
acfFileWrite.write( '</acf>\n')
acfFileWrite.close()