SonarOpenCommunity / sonar-cxx

SonarQube C++ Community plugin (cxx plugin): This plugin adds C++ support to SonarQube with the focus on integration of existing C++ tools.
GNU Lesser General Public License v3.0
992 stars 364 forks source link

Symlinks does not work #1313

Closed s-martin closed 6 years ago

s-martin commented 6 years ago

I use SonarQube 6.7 with sonar-cxx 0.9.8 on Jenkins (CentOS 7). I have the issue that while coverage files produced by gcovr in cobertura format (is valid according to DTD) are picked up correctly, SonarQube has 0% coverage.

Please see output of Sonar and resulting coverage file below.

[workspace] $ /opt/sonar-scanner-3.0.3.778/bin/sonar-scanner -e -Dsonar.host.url=http://buildserver:9000/ ******** -Dproject.settings=/var/lib/jenkins/jobs/MYPROJECT/workspace/SourceCode/Common/sonar-project.properties -Dsonar.projectBaseDir=/var/lib/jenkins/jobs/MYPROJECT/workspace
INFO: Option -e/--errors is no longer supported and will be ignored
INFO: Scanner configuration file: /opt/sonar-scanner-3.0.3.778/conf/sonar-scanner.properties
INFO: Project root configuration file: /var/lib/jenkins/jobs/MYPROJECT/workspace/SourceCode/Common/sonar-project.properties
INFO: SonarQube Scanner 3.0.3.778
INFO: Java 1.8.0_151 Oracle Corporation (64-bit)
INFO: Linux 3.10.0-327.36.3.el7.x86_64 amd64
INFO: User cache: /var/lib/jenkins/.sonar/cache
INFO: Publish mode
INFO: Load global settings
INFO: Load global settings (done) | time=267ms
INFO: Server id: AV-_sC3N7l3pJegDI-j0
INFO: User cache: /var/lib/jenkins/.sonar/cache
INFO: Load plugins index
INFO: Load plugins index (done) | time=85ms
INFO: SonarQube server 6.7.0
INFO: Default locale: "en_US", source code encoding: "UTF-8" (analysis is platform dependent)
INFO: Process project properties
INFO: Load project repositories
INFO: Load project repositories (done) | time=231ms
INFO: Load quality profiles
INFO: Load quality profiles (done) | time=243ms
INFO: Load active rules
INFO: Load active rules (done) | time=1354ms
INFO: Load metrics repository
INFO: Load metrics repository (done) | time=64ms
INFO: Project key: MYPROJECT
INFO: -------------  Scan MYPROJECT
INFO: Load server rules
INFO: Load server rules (done) | time=74ms
INFO: Base dir: /var/lib/jenkins/jobs/MYPROJECT/workspace
INFO: Working dir: /var/lib/jenkins/jobs/MYPROJECT/workspace/.scannerwork
INFO: Source paths: SourceCode/Common/src
INFO: Test paths: SourceCode/Common/test
INFO: Source encoding: UTF-8, default locale: en_US
INFO: Language is forced to c++
INFO: Index files
INFO: Excluded sources: 
INFO:   **/test/*
INFO: Included tests: 
INFO:   **/test/*
WARN: File '/var/lib/jenkins/jobs/MYPROJECT/workspace/SourceCode/Common/src/MYPROJECT_settings.ini' is ignored because it doesn't belong to the forced language 'c++'
WARN: File '/var/lib/jenkins/jobs/MYPROJECT/workspace/SourceCode/Common/src/CMakeLists.txt' is ignored because it doesn't belong to the forced language 'c++'
WARN: File '/var/lib/jenkins/jobs/MYPROJECT/workspace/SourceCode/Common/test/CMakeLists.txt' is ignored because it doesn't belong to the forced language 'c++'
INFO: 27 files indexed
INFO: 0 files ignored because of inclusion/exclusion patterns
INFO: Quality profile for c++: Sonar way (outdated copy)
INFO: Sensor c++ SquidSensor [cxx]
INFO: SonarQube 6.2 or newer environment
INFO: Searching coverage reports by path with basedir '/var/lib/jenkins/jobs/MYPROJECT/workspace' and search prop 'sonar.cxx.coverage.reportPath'
INFO: Searching for coverage reports '[./Application/trunk/SourceCode/Common/Debug/coverage.xml]'
INFO: Coverage BaseDir '/var/lib/jenkins/jobs/MYPROJECT/workspace' 
INFO: Scanner found '1' report files
INFO: Parser will parse '1' report files
INFO: Added coverage report '/var/lib/jenkins/jobs/MYPROJECT/workspace/SourceCode/Common/Debug/coverage.xml' (parsed by: CoberturaParser)
INFO: Sensor c++ SquidSensor [cxx] (done) | time=50984ms
INFO: Sensor c++ RatsSensor [cxx]
INFO: Searching reports by relative path with basedir '/var/lib/jenkins/jobs/MYPROJECT/workspace' and search prop 'sonar.cxx.rats.reportPath'
INFO: Undefined report path value for key 'sonar.cxx.rats.reportPath'
INFO: CXX-RATS processed = 0
INFO: Sensor c++ RatsSensor [cxx] (done) | time=0ms
INFO: Sensor c++ CppCheckSensor [cxx]
INFO: Searching reports by relative path with basedir '/var/lib/jenkins/jobs/MYPROJECT/workspace' and search prop 'sonar.cxx.cppcheck.reportPath'
INFO: Scanner found '1' report files
INFO: Parser will parse '1' report files
INFO: Processing report '/var/lib/jenkins/jobs/MYPROJECT/workspace/SourceCode/Common/cppcheck.xml'
WARN: Cannot find the file '/opt/var/lib/jenkins/jobs/MYPROJECT/workspace/SourceCode/Common/src/DateTimeT.cpp', skipping violations
WARN: Cannot find the file '/opt/var/lib/jenkins/jobs/MYPROJECT/workspace/SourceCode/Common/src/DateTime.cpp', skipping violations
WARN: Cannot find the file '/opt/var/lib/jenkins/jobs/MYPROJECT/workspace/SourceCode/Common/src/FileIo.cpp', skipping violations
WARN: Cannot find the file '/opt/var/lib/jenkins/jobs/MYPROJECT/workspace/SourceCode/Common/src/XmlParser.cpp', skipping violations
WARN: Cannot find the file '/opt/var/lib/jenkins/jobs/MYPROJECT/workspace/SourceCode/Common/src/XmlErrorHandler.cpp', skipping violations
WARN: Cannot find the file '/opt/var/lib/jenkins/jobs/MYPROJECT/workspace/SourceCode/Common/src/CommonVersion.cpp', skipping violations
WARN: Cannot find the file '/opt/var/lib/jenkins/jobs/MYPROJECT/workspace/SourceCode/Common/src/Tracing.cpp', skipping violations
INFO: Added report '/var/lib/jenkins/jobs/MYPROJECT/workspace/SourceCode/Common/cppcheck.xml' (parsed by: CppcheckParserV2)
INFO: CXX-CPPCHECK processed = 0
INFO: Sensor c++ CppCheckSensor [cxx] (done) | time=6ms
INFO: Sensor c++ PCLintSensor [cxx]
INFO: Searching reports by relative path with basedir '/var/lib/jenkins/jobs/MYPROJECT/workspace' and search prop 'sonar.cxx.pclint.reportPath'
INFO: Undefined report path value for key 'sonar.cxx.pclint.reportPath'
INFO: CXX-PC-LINT processed = 0
INFO: Sensor c++ PCLintSensor [cxx] (done) | time=0ms
INFO: Sensor c++ DrMemorySensor [cxx]
INFO: Searching reports by relative path with basedir '/var/lib/jenkins/jobs/MYPROJECT/workspace' and search prop 'sonar.cxx.drmemory.reportPath'
INFO: Undefined report path value for key 'sonar.cxx.drmemory.reportPath'
INFO: CXX-DRMEMORY processed = 0
INFO: Sensor c++ DrMemorySensor [cxx] (done) | time=0ms
INFO: Sensor c++ CompilerSensor [cxx]
INFO: Searching reports by relative path with basedir '/var/lib/jenkins/jobs/MYPROJECT/workspace' and search prop 'sonar.cxx.compiler.reportPath'
INFO: Undefined report path value for key 'sonar.cxx.compiler.reportPath'
INFO: CXX-COMPILER processed = 0
INFO: Sensor c++ CompilerSensor [cxx] (done) | time=0ms
INFO: Sensor c++ VeraxxSensor [cxx]
INFO: Searching reports by relative path with basedir '/var/lib/jenkins/jobs/MYPROJECT/workspace' and search prop 'sonar.cxx.vera.reportPath'
INFO: Scanner found '0' report files
WARN: Cannot find a report for 'sonar.cxx.vera.reportPath'
INFO: CXX-VERA++ processed = 0
INFO: Sensor c++ VeraxxSensor [cxx] (done) | time=3ms
INFO: Sensor c++ ValgrindSensor [cxx]
INFO: Searching reports by relative path with basedir '/var/lib/jenkins/jobs/MYPROJECT/workspace' and search prop 'sonar.cxx.valgrind.reportPath'
INFO: Scanner found '1' report files
INFO: Parser will parse '1' report files
INFO: Processing report '/var/lib/jenkins/jobs/MYPROJECT/workspace/MYPROJECTTest.29126.xml'
INFO: CXX-VALGRIND processed = 0
INFO: Sensor c++ ValgrindSensor [cxx] (done) | time=7ms
INFO: Sensor c++ ClangTidySensor [cxx]
INFO: Searching reports by relative path with basedir '/var/lib/jenkins/jobs/MYPROJECT/workspace' and search prop 'sonar.cxx.clangtidy.reportPath'
INFO: Undefined report path value for key 'sonar.cxx.clangtidy.reportPath'
INFO: CXX-CLANG-TIDY processed = 0
INFO: Sensor c++ ClangTidySensor [cxx] (done) | time=1ms
INFO: Sensor c++ ClangSASensor [cxx]
INFO: Searching reports by relative path with basedir '/var/lib/jenkins/jobs/MYPROJECT/workspace' and search prop 'sonar.cxx.clangsa.reportPath'
INFO: Undefined report path value for key 'sonar.cxx.clangsa.reportPath'
INFO: CXX-CLANGSA processed = 0
INFO: Sensor c++ ClangSASensor [cxx] (done) | time=0ms
INFO: Sensor c++ ExternalRulesSensor [cxx]
INFO: Undefined report path value for key 'sonar.cxx.other.xslt.1.inputs'
ERROR: sonar.cxx.other.xslt.1.stylesheet is not defined.
INFO: Searching reports by relative path with basedir '/var/lib/jenkins/jobs/MYPROJECT/workspace' and search prop 'sonar.cxx.other.reportPath'
INFO: Undefined report path value for key 'sonar.cxx.other.reportPath'
INFO: CXX-OTHER processed = 0
INFO: Sensor c++ ExternalRulesSensor [cxx] (done) | time=0ms
INFO: Sensor c++ XunitSensor [cxx]
INFO: Scanner found '1' report files
INFO: Parser will parse '1' report files
INFO: Processing report '/var/lib/jenkins/jobs/MYPROJECT/workspace/SourceCode/Common/MYPROJECTTestsResults.xml'
INFO: Parsing 'xUnit' format
WARN: Metric 'test_success_density' is an internal metric computed by SonarQube. Provided value is ignored.
INFO: Sensor c++ XunitSensor [cxx] (done) | time=399ms
INFO: Sensor Unit Test Results Import [cxx]
INFO: Sensor Unit Test Results Import [cxx] (done) | time=0ms
INFO: Sensor c++ CoverageSensor [cxx]
INFO: Sensor c++ CoverageSensor [cxx] (done) | time=0ms
INFO: Sensor XmlFileSensor [java]
INFO: Sensor XmlFileSensor [java] (done) | time=1ms
INFO: Sensor Zero Coverage Sensor
INFO: Sensor Zero Coverage Sensor (done) | time=48ms
INFO: Sensor CPD Block Indexer
INFO: Sensor CPD Block Indexer (done) | time=0ms
INFO: SCM Publisher is disabled
INFO: 9 files had no CPD blocks
INFO: Calculating CPD for 10 files
INFO: CPD calculation finished
INFO: Analysis report generated in 172ms, dir size=205 KB
INFO: Analysis reports compressed in 45ms, zip size=84 KB
INFO: Analysis report uploaded in 183ms
INFO: ANALYSIS SUCCESSFUL, you can browse http://buildserver:9000/dashboard/index/MYPROJECT
INFO: Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
INFO: More about the report processing at http://buildserver:9000/api/ce/task?id=AV_J2V_xi73ctzaiQf9b
INFO: Task total time: 56.461 s
INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
INFO: Total time: 59.928s
INFO: Final Memory: 52M/450M
INFO: ------------------------------------------------------------------------
<?xml version="1.0" ?>
<!DOCTYPE coverage
  SYSTEM 'http://cobertura.sourceforge.net/xml/coverage-03.dtd'>
<coverage branch-rate="0.533715925395" line-rate="0.908695652174" timestamp="1510917206" version="gcovr 3.3">
    <sources>
        <source>/var/lib/jenkins/jobs/MYPROJECT/workspace/SourceCode/Common</source>
    </sources>
    <packages>
        <package branch-rate="0.533715925395" complexity="0.0" line-rate="0.908695652174" name="src">
            <classes>
                <class branch-rate="0.56976744186" complexity="0.0" filename="src/DateTimeT.cpp" line-rate="0.963636363636" name="DateTimeT_cpp">
                    <methods/>
                    <lines>
                        <line branch="true" condition-coverage="50% (1/2)" hits="8779" number="22">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="8779" number="24"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="8779" number="26">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="8779" number="30">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="8779" number="32">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="8779" number="34">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="8779" number="35"/>
                        <line branch="false" hits="2812" number="44"/>
                        <line branch="true" condition-coverage="100% (2/2)" hits="11239" number="46">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (4/8)" hits="2830" number="47">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (4/8)" hits="2821" number="48">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="60% (6/10)" hits="8445" number="49">
                            <conditions>
                                <condition coverage="60%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="9" number="53"/>
                        <line branch="true" condition-coverage="66% (4/6)" hits="6324" number="56">
                            <conditions>
                                <condition coverage="66%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="5967" number="58">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="66% (4/6)" hits="5967" number="59">
                            <conditions>
                                <condition coverage="66%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="2455" number="61"/>
                        <line branch="true" condition-coverage="62% (5/8)" hits="5489" number="64">
                            <conditions>
                                <condition coverage="62%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="70% (7/10)" hits="3034" number="65">
                            <conditions>
                                <condition coverage="70%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="240" number="68">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="240" number="69">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="240" number="71">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="4430" number="73">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="70% (7/10)" hits="2215" number="74">
                            <conditions>
                                <condition coverage="70%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="4" number="77">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="4" number="78">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="4" number="80">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="4422" number="82">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="40% (4/10)" hits="2211" number="83">
                            <conditions>
                                <condition coverage="40%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="1769" number="86">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="2455" number="90">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="115" number="92">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="100% (2/2)" hits="115" number="94">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="85" number="96">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="75" number="98"/>
                        <line branch="false" hits="10" number="102"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="115" number="105">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="100% (2/2)" hits="2455" number="108">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="3512" number="110"/>
                        <line branch="false" hits="357" number="111"/>
                        <line branch="false" hits="17" number="120"/>
                        <line branch="false" hits="17" number="122"/>
                        <line branch="false" hits="17" number="123"/>
                        <line branch="false" hits="111" number="135"/>
                        <line branch="true" condition-coverage="75% (3/4)" hits="111" number="137">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="4" number="139">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="107" number="142">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="107" number="145">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="100% (2/2)" hits="8" number="147">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="149">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="100% (2/2)" hits="6" number="151">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="4" number="153">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="4" number="155">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (5/10)" hits="4" number="156">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="4" number="157">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="0% (0/4)" hits="0" number="159">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="0% (0/2)" hits="0" number="161">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="0% (0/10)" hits="0" number="162">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="0% (0/4)" hits="0" number="163">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="107" number="167"/>
                        <line branch="false" hits="16" number="176"/>
                        <line branch="true" condition-coverage="75% (3/4)" hits="16" number="178">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="180">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="14" number="183">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="28" number="186">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (6/8)" hits="14" number="187">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (3/6)" hits="4" number="189">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="10" number="193">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="100% (2/2)" hits="14" number="196">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="4" number="198">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="100% (2/2)" hits="10" number="200">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="8" number="202">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (5/10)" hits="8" number="203">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="8" number="204">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="28" number="207"/>
                        <line branch="false" hits="738" number="216"/>
                        <line branch="true" condition-coverage="75% (3/4)" hits="738" number="218">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="105" number="220">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="633" number="223">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="1266" number="226">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="87% (7/8)" hits="633" number="227">
                            <conditions>
                                <condition coverage="87%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (3/6)" hits="54" number="229">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="579" number="233">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="100% (2/2)" hits="633" number="236">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="217" number="238">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="100% (2/2)" hits="416" number="240">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="147" number="242">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (5/10)" hits="147" number="243">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="147" number="244">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="1266" number="246"/>
                        <line branch="false" hits="976" number="254"/>
                        <line branch="true" condition-coverage="56% (9/16)" hits="976" number="256">
                            <conditions>
                                <condition coverage="56%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="129" number="258"/>
                        <line branch="false" hits="847" number="260"/>
                        <line branch="false" hits="24" number="271"/>
                        <line branch="true" condition-coverage="100% (2/2)" hits="24" number="273">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="9" number="275"/>
                        <line branch="false" hits="15" number="277"/>
                        <line branch="false" hits="43" number="285"/>
                        <line branch="true" condition-coverage="75% (3/4)" hits="43" number="287">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="289">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="41" number="292">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="100% (2/2)" hits="41" number="294">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="8" number="296">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="100% (2/2)" hits="33" number="298">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="4" number="300">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (5/10)" hits="4" number="301">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="4" number="302">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="41" number="304"/>
                        <line branch="true" condition-coverage="50% (2/4)" hits="33" number="307">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                    </lines>
                </class>
                <class branch-rate="0.0" complexity="0.0" filename="src/DateTimeT.h" line-rate="1.0" name="DateTimeT_h">
                    <methods/>
                    <lines>
                        <line branch="false" hits="36" number="34"/>
                        <line branch="false" hits="12" number="58"/>
                        <line branch="false" hits="24" number="87"/>
                    </lines>
                </class>
                <class branch-rate="0.524105754277" complexity="0.0" filename="src/FileIo.cpp" line-rate="0.858108108108" name="FileIo_cpp">
                    <methods/>
                    <lines>
                        <line branch="true" condition-coverage="50% (9/18)" hits="11" number="24">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="79" number="33"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="79" number="35">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="158" number="36">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="79" number="38">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="79" number="39">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="158" number="41"/>
                        <line branch="false" hits="23" number="50"/>
                        <line branch="false" hits="23" number="52"/>
                        <line branch="false" hits="23" number="53"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="23" number="55">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="23" number="57">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="16" number="59">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="23" number="62"/>
                        <line branch="false" hits="62" number="71"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="62" number="73">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="100% (4/4)" hits="62" number="77">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="12" number="79">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="12" number="80"/>
                        <line branch="true" condition-coverage="75% (3/4)" hits="48" number="82">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="84">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="2" number="85"/>
                        <line branch="false" hits="4" number="88"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="90">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="2" number="91"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="46" number="93">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="108" number="102"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="108" number="104">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="100% (4/4)" hits="108" number="108">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="19" number="110">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="19" number="111"/>
                        <line branch="true" condition-coverage="75% (3/4)" hits="87" number="113">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="115">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="2" number="116"/>
                        <line branch="false" hits="4" number="119"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="121">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="2" number="122"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="85" number="124">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="101" number="133"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="101" number="135">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="101" number="136">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="100% (4/4)" hits="101" number="139">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="21" number="141"/>
                        <line branch="false" hits="21" number="142"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="21" number="143">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="16% (1/6)" hits="0" number="145">
                            <conditions>
                                <condition coverage="16%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="146"/>
                        <line branch="false" hits="12" number="150"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="6" number="152">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="6" number="153"/>
                        <line branch="false" hits="95" number="155"/>
                        <line branch="false" hits="4" number="166"/>
                        <line branch="true" condition-coverage="50% (2/4)" hits="4" number="168">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="4" number="170">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="4" number="171">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="4" number="173">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="4" number="174">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="0% (0/2)" hits="0" number="177">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="44" number="188"/>
                        <line branch="true" condition-coverage="75% (3/4)" hits="44" number="191">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="193">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="2" number="194"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="42" number="197">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="42" number="198">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="3" number="200">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="3" number="201">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="3" number="202"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="78" number="205">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="39" number="206">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="208">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="209">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="2" number="210"/>
                        <line branch="true" condition-coverage="50% (4/8)" hits="37" number="213">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="37" number="215"/>
                        <line branch="true" condition-coverage="0% (0/2)" hits="0" number="219">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="0% (0/2)" hits="0" number="220">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="221"/>
                        <line branch="false" hits="42" number="222"/>
                        <line branch="false" hits="1" number="231"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="1" number="235">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="1" number="236"/>
                        <line branch="false" hits="1" number="237"/>
                        <line branch="true" condition-coverage="62% (5/8)" hits="3" number="238">
                            <conditions>
                                <condition coverage="62%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="240">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="241">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="0% (0/6)" hits="0" number="244">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="245"/>
                        <line branch="false" hits="1" number="247"/>
                        <line branch="true" condition-coverage="0% (0/2)" hits="1" number="248">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="250"/>
                        <line branch="true" condition-coverage="0% (0/2)" hits="0" number="252">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="254"/>
                        <line branch="false" hits="59" number="263"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="59" number="265">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="59" number="266">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="118" number="267">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="59" number="269">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="10790" number="271">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="10676" number="273">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="10676" number="274">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="57" number="276">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="280">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="118" number="283"/>
                        <line branch="false" hits="8" number="294"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="8" number="296">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="8" number="297">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="16" number="298">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="8" number="300">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="3986" number="302">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="3974" number="304">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="3974" number="307">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="3974" number="308">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="6" number="310">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="6" number="312">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="4" number="314">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="319">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="16" number="321"/>
                        <line branch="false" hits="54" number="330"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="54" number="332">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="54" number="333">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="24" number="335">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="24" number="336">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="30" number="339"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="30" number="341">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="30" number="342">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="30" number="343">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="30" number="344">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="0% (0/2)" hits="0" number="346">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="60" number="349">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="30" number="350">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="30" number="351">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="84" number="353"/>
                        <line branch="false" hits="44" number="363"/>
                        <line branch="true" condition-coverage="75% (3/4)" hits="44" number="365">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="2" number="367"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="42" number="370">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="42" number="371">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="373">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="2" number="374"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="40" number="377">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="40" number="378">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="40" number="380"/>
                        <line branch="false" hits="16" number="391"/>
                        <line branch="true" condition-coverage="100% (2/2)" hits="16" number="394">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="2" number="396"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="14" number="399">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="14" number="400">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="14" number="402">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="14" number="413"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="14" number="417">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="14" number="418">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="100% (2/2)" hits="14" number="419">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="10" number="421">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (3/6)" hits="14" number="423">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="10" number="433"/>
                        <line branch="true" condition-coverage="50% (2/4)" hits="10" number="438">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="20" number="439">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="10" number="440">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="20" number="444">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (3/6)" hits="10" number="445">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (3/6)" hits="10" number="446">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="10" number="447">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="20" number="448">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="20" number="449">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="10" number="451">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="0% (0/2)" hits="0" number="453">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="454"/>
                        <line branch="true" condition-coverage="50% (2/4)" hits="10" number="457">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="0% (0/2)" hits="0" number="459">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="460"/>
                        <line branch="true" condition-coverage="0% (0/2)" hits="20" number="462">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="464"/>
                        <line branch="true" condition-coverage="0% (0/2)" hits="0" number="466">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="468"/>
                        <line branch="false" hits="16" number="479"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="16" number="484">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="66% (4/6)" hits="30" number="485">
                            <conditions>
                                <condition coverage="66%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (7/14)" hits="14" number="487">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="14" number="489">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="14" number="490">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="14" number="492"/>
                        <line branch="true" condition-coverage="100% (2/2)" hits="16" number="494">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="496">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="2" number="497"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="28" number="500">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (5/10)" hits="14" number="501">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="28" number="502">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="28" number="503">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="14" number="505">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="507">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="2" number="508"/>
                        <line branch="true" condition-coverage="50% (2/4)" hits="12" number="511">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="0% (0/2)" hits="0" number="513">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="514"/>
                        <line branch="true" condition-coverage="0% (0/2)" hits="28" number="516">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="518"/>
                        <line branch="true" condition-coverage="0% (0/2)" hits="0" number="520">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="522"/>
                        <line branch="false" hits="18" number="532"/>
                        <line branch="true" condition-coverage="100% (2/2)" hits="18" number="535">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="2" number="537"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="16" number="542">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (4/8)" hits="16" number="543">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="32" number="545">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="16" number="547">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="0% (0/2)" hits="0" number="549">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="550"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="16" number="554">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="0% (0/2)" hits="32" number="557">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="559"/>
                        <line branch="true" condition-coverage="0% (0/2)" hits="0" number="561">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="563"/>
                        <line branch="false" hits="57" number="572"/>
                        <line branch="false" hits="57" number="575"/>
                        <line branch="true" condition-coverage="66% (4/6)" hits="139" number="576">
                            <conditions>
                                <condition coverage="66%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="137" number="578">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="55" number="580"/>
                        <line branch="true" condition-coverage="100% (2/2)" hits="55" number="581">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="82" number="583"/>
                        <line branch="true" condition-coverage="100% (2/2)" hits="57" number="585">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="587">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="588">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="55" number="591">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="55" number="596">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="55" number="598">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="0% (0/2)" hits="0" number="600">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="0% (0/2)" hits="0" number="601">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="55" number="604">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="364" number="607">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="254" number="609">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="55" number="612">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="3" number="614">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="110" number="617">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="55" number="618">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="110" number="620"/>
                        <line branch="false" hits="28" number="629"/>
                        <line branch="true" condition-coverage="100% (2/2)" hits="28" number="631">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="26" number="633">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="635">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="24" number="637">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="639">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="22" number="641">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="643">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="61% (16/26)" hits="20" number="645">
                            <conditions>
                                <condition coverage="61%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="6" number="647">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="14" number="649">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="651">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="61% (11/18)" hits="12" number="653">
                            <conditions>
                                <condition coverage="61%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="4" number="655">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="8" number="657">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="659">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="6" number="661">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="663">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="75% (3/4)" hits="4" number="665">
                            <conditions>
                                <condition coverage="75%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="667">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="2" number="671"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="672">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="2" number="675">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="9" number="685"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="9" number="687">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="0% (0/2)" hits="0" number="689">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="0% (0/4)" hits="0" number="690">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="9" number="693">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="9" number="694">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="9" number="695">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="3" number="705"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="3" number="709">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="3" number="710">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="3" number="712">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="6" number="714">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="3" number="715">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="6" number="716">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="6" number="719">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="3" number="720">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="41% (5/12)" hits="6" number="722">
                            <conditions>
                                <condition coverage="41%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="724"/>
                        <line branch="true" condition-coverage="0% (0/2)" hits="0" number="726">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="727"/>
                        <line branch="false" hits="4" number="738"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="4" number="742">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="4" number="743">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="8" number="744">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="4" number="745">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="8" number="746">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="4" number="749">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="100% (2/2)" hits="4" number="751">
                            <conditions>
                                <condition coverage="100%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="3" number="753"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="1" number="755">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="0% (0/3)" hits="5" number="756">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="758"/>
                        <line branch="true" condition-coverage="0% (0/2)" hits="0" number="760">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="761"/>
                        <line branch="false" hits="0" number="763"/>
                        <line branch="true" condition-coverage="0% (0/2)" hits="0" number="765">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="766"/>
                        <line branch="true" condition-coverage="50% (2/4)" hits="33" number="770">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                    </lines>
                </class>
                <class branch-rate="0.509803921569" complexity="0.0" filename="src/Settings.cpp" line-rate="0.941176470588" name="Settings_cpp">
                    <methods/>
                    <lines>
                        <line branch="false" hits="68" number="26"/>
                        <line branch="true" condition-coverage="50% (19/38)" hits="68" number="31">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="68" number="34">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (3/6)" hits="136" number="36">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="68" number="37">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="136" number="39">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (3/6)" hits="136" number="41">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="68" number="42">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="136" number="44">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (5/10)" hits="136" number="46">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="136" number="47">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (4/8)" hits="204" number="48">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="136" number="49">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (4/8)" hits="204" number="50">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="136" number="51">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="136" number="52">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (4/8)" hits="204" number="53">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="136" number="55">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (3/6)" hits="136" number="58">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="136" number="59">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (3/6)" hits="136" number="61">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="68" number="62">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (3/6)" hits="136" number="64">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="68" number="65">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (3/6)" hits="136" number="67">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="68" number="68">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="136" number="69">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="68" number="70">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (3/6)" hits="204" number="71">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="136" number="73">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (3/6)" hits="136" number="75">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="136" number="76">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="136" number="77">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="136" number="78">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (2/4)" hits="136" number="80">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (4/8)" hits="136" number="82">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (3/6)" hits="204" number="83">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (3/6)" hits="204" number="84">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (1/2)" hits="136" number="86">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="50% (5/10)" hits="68" number="87">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
....
                        <line branch="true" condition-coverage="66% (4/6)" hits="136" number="147">
                            <conditions>
                                <condition coverage="66%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="true" condition-coverage="0% (0/2)" hits="0" number="151">
                            <conditions>
                                <condition coverage="0%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="0" number="152"/>
                        <line branch="false" hits="68" number="155"/>
                        <line branch="true" condition-coverage="50% (2/4)" hits="33" number="156">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                    </lines>
                </class>
                <class branch-rate="0.5" complexity="0.0" filename="src/Settings.h" line-rate="1.0" name="Settings_h">
                    <methods/>
                    <lines>
                        <line branch="true" condition-coverage="50% (1/2)" hits="67" number="36">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
                        <line branch="false" hits="4" number="40"/>
                        <line branch="false" hits="4" number="45"/>
                        <line branch="false" hits="4" number="50"/>
                        <line branch="false" hits="2" number="51"/>
                        <line branch="false" hits="4" number="52"/>
                        <line branch="false" hits="2" number="53"/>
                        <line branch="false" hits="4" number="54"/>
                        <line branch="false" hits="2" number="55"/>
                        <line branch="false" hits="2" number="56"/>
                        <line branch="false" hits="2" number="57"/>
                        <line branch="false" hits="4" number="62"/>
                        <line branch="false" hits="4" number="63"/>
                        <line branch="false" hits="4" number="64"/>
                        <line branch="false" hits="4" number="65"/>
                        <line branch="false" hits="4" number="66"/>
                        <line branch="false" hits="4" number="67"/>
                        <line branch="false" hits="2" number="72"/>
                        <line branch="false" hits="2" number="73"/>
                        <line branch="false" hits="2" number="74"/>
                        <line branch="false" hits="2" number="76"/>
                        <line branch="false" hits="4" number="81"/>
                        <line branch="false" hits="4" number="82"/>
                        <line branch="false" hits="4" number="83"/>
                    </lines>
                </class>
                <class branch-rate="0.6875" complexity="0.0" filename="src/StringOps.hpp" line-rate="1.0" name="StringOps_hpp">
                    <methods/>
                    <lines>
                        <line branch="false" hits="14" number="92"/>
                        <line branch="true" condition-coverage="50% (1/2)" hits="14" number="95">
                            <conditions>
                                <condition coverage="50%" number="0" type="jump"/>
                            </conditions>
                        </line>
...
                    </lines>
                </class>
....
            </classes>
        </package>
    </packages>
</coverage>
guwirth commented 6 years ago

@s-martin please turn debug Info on to get more information. https://github.com/SonarOpenCommunity/sonar-cxx/wiki/Get-debug-information

guwirth commented 6 years ago

@s-martin in general coverage is working. This is also tested by our integration tests. Most likely it‘s an path issue: https://github.com/SonarOpenCommunity/sonar-cxx/wiki/Path-and-path-separator-issues

s-martin commented 6 years ago

Thanks for the info. I will check both debug output and paths, when I'm back in the office tomorrow. The workspace contains a Linux symlink, may this cause issues?

s-martin commented 6 years ago

For sonar-scanner -e I get

INFO: Option -e/--errors is no longer supported and will be ignored

Is there an update of the description in https://github.com/SonarOpenCommunity/sonar-cxx/wiki/Get-debug-information needed?

guwirth commented 6 years ago

@s-martin thx I updated the page https://github.com/SonarOpenCommunity/sonar-cxx/wiki/Get-debug-information needed. -e is no more supported.

s-martin commented 6 years ago

OK, I digged a little deeper and I found out the following.

My Jenkins is located at /opt/var/lib/jenkins and there is a symlink /var/lib/jenkins.

Multiple parsers seem somehow choke on this, e.g. Coverage:

14:04:36.565 INFO: Searching coverage reports by path with basedir '/var/lib/jenkins/jobs/MYPROJECT/workspace' and search prop 'sonar.cxx.coverage.reportPath'
14:04:36.565 INFO: Searching for coverage reports '[Application/trunk/SourceCode/Common/Debug/coverage.xml]'
14:04:36.565 INFO: Coverage BaseDir '/var/lib/jenkins/jobs/MYPROJECT/workspace' 
14:04:36.565 DEBUG: Parsing unit test coverage reports
14:04:36.567 DEBUG: Normalized report includes to '[/var/lib/jenkins/jobs/MYPROJECT/workspace/Application/trunk/SourceCode/Common/Debug/coverage.xml]'
14:04:36.580 INFO: Scanner found '1' report files
14:04:36.581 INFO: Parser will parse '1' report files
14:04:36.581 DEBUG: Parsing 'Cobertura' format
14:04:36.754 INFO: Added coverage report '/var/lib/jenkins/jobs/MYPROJECT/workspace/Application/trunk/SourceCode/Common/Debug/coverage.xml' (parsed by: CoberturaParser)
14:04:36.755 DEBUG: cached measures for '/var/lib/jenkins/jobs/MYPROJECT/workspace/Application/trunk/SourceCode/Common/Debug/coverage.xml' : current cache content data = '0'
14:04:36.755 DEBUG: save coverage measure for file: '/opt/var/lib/jenkins/jobs/MYPROJECT/workspace/Application/trunk/SourceCode/Common/src/Settings.cpp' cxxFile = 'null'
14:04:36.756 DEBUG: Cannot find the file '/opt/var/lib/jenkins/jobs/MYPROJECT/workspace/Application/trunk/SourceCode/Common/src/Settings.cpp', ignoring coverage measures

I also tried to put in the absolute paths with /opt/var/ and /var/ via sed into coverage.xml or cppcheck.xml, but neither worked.

Doesn't work also for cppcheck and clang-tidy.

Other parsers seem to be unaffected.

guwirth commented 6 years ago

@s-martin I fear no one tried it with symlinks up to now. What I can do is to add it as an enhancement for the future.

s-martin commented 6 years ago

@guwirth that would be great, thanks!

guwirth commented 6 years ago

I close this and created a new issue.