Not able to import llvm-cov report

Hi
Using clang and followed the SonarQube directions for cfamily.llvm-cov

I’m not getting the codecoverage report in SonarQube dashboard.

I’m using Code Analyzer for C, C++, Objective-C 6.8.0 (build 16475)installed
@’
sonar.host.url=https://sonar.ncte.hpc.mil
sonar.projectKey=impass
sonar.projectName=IMPASS
sonar.branch.name=IMPASS-229_CIcoverage
sonar.sources=.\core\src
sonar.sourceEncoding=UTF-8
sonar.cfamily.build-wrapper-output=build_wrapper_output
sonar.cfamily.llvm-cov.reportPath=bld_clang_ninja_cov\coveragereport.txt
sonar.cfamily.cache.enabled=false
'@ > .\core\sonar-project.properties

10:11:45.252 ERROR: Error during SonarQube Scanner execution
java.lang.IllegalArgumentException: Null byte present in file/path name. There are no known legitimate use cases for such data, but several injection attacks may use it
at org.sonar.api.internal.apachecommons.io.FilenameUtils.failIfNullBytePresent(FilenameUtils.java:989)
at org.sonar.api.internal.apachecommons.io.FilenameUtils.doNormalize(FilenameUtils.java:353)
at org.sonar.api.internal.apachecommons.io.FilenameUtils.normalize(FilenameUtils.java:243)
at org.sonar.api.utils.PathUtils.sanitize(PathUtils.java:42)
at org.sonar.api.batch.fs.internal.AbsolutePathPredicate.(AbsolutePathPredicate.java:42)
at org.sonar.api.batch.fs.internal.DefaultFilePredicates.hasAbsolutePath(DefaultFilePredicates.java:68)
at com.sonar.cpp.plugin.llvmcov.LLVMCovSensor.lambda$execute$1(LLVMCovSensor.java:66)
at com.sonar.cpp.plugin.llvmcov.LLVMCovSensor$LineConsumer.consume(LLVMCovSensor.java:184)
at com.sonar.cpp.plugin.llvmcov.LLVMCovSensor$LineConsumer.accept(LLVMCovSensor.java:127)
at com.sonar.cpp.plugin.llvmcov.LLVMCovSensor$LineConsumer.accept(LLVMCovSensor.java:96)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.ReferencePipeline$Head.forEachOrdered(ReferencePipeline.java:590)
at com.sonar.cpp.plugin.llvmcov.LLVMCovSensor.read(LLVMCovSensor.java:89)
at com.sonar.cpp.plugin.llvmcov.LLVMCovSensor.execute(LLVMCovSensor.java:63)
at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:48)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:85)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:59)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:77)
at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:59)
at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:82)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:400)
at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:395)
at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:358)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:141)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:73)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
at com.sun.proxy.$Proxy0.execute(Unknown Source)
at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:171)
at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:128)
at org.sonarsource.scanner.cli.Main.execute(Main.java:111)
at org.sonarsource.scanner.cli.Main.execute(Main.java:75)
at org.sonarsource.scanner.cli.Main.main(Main.java:61)

Build step ‘Execute Windows batch command’ marked build as failure

Finished: FAILURE

Hello @Eric_Dunn,

Try to use forward slash instead of backslash.
Try this instead sonar.cfamily.llvm-cov.reportPath=bld_clang_ninja_cov/coveragereport.txt
Same for sonar.sources.

Can you also upload the file coveragereport.txt. Let me know if you prefer to share it privately.

Thanks,

Okay… magic feather is…
Make sure coveragereport is in Ascii

Get-Content core\bld_clang_ninja_cov\coveragereport.txt | Set-Content -Encoding Ascii core\bld_clang_ninja_cov\coveragereport_Ascii.txt

Solved

Using Jenkins. Windows10 Node.
C++ code using clang.exe

Everything works except publishing the code coverage reports… sigh

sonar.host.url=https://sonar.ncte.hpc.mil
sonar.projectKey=myproject
sonar.projectName=MYPROJECT
sonar.projectVersion=1.0
sonar.branch.name=MYBRANCH
sonar.sources=core/src
sonar.cfamily.cache.enabled=false
sonar.cfamily.build-wrapper-output=build_wrapper_output
sonar.sourceEncoding=UTF-8
sonar.cfamily.cache.enabled=false
sonar.cfamily.llvm-cov.reportPath=core/bld_clang_ninja_cov/coveragereport.txt

08:48:55.380 INFO: Parsing C:\Jenkins\workspace\NCITE_Test_466_FS\core\bld_clang_ninja_cov\coveragereport.txt
08:48:55.442 INFO: ------------------------------------------------------------------------
08:48:55.442 INFO: EXECUTION FAILURE
08:48:55.442 INFO: ------------------------------------------------------------------------
08:48:55.442 INFO: Total time: 53.157s
08:48:55.649 INFO: Final Memory: 47M/334M
08:48:55.650 INFO: ------------------------------------------------------------------------
08:48:55.650 ERROR: Error during SonarScanner execution
java.lang.IllegalArgumentException: Null byte present in file/path name. There are no known legitimate use cases for such data, but several injection attacks may use it

Let me share file privately

Strange… “gedit” is only text editor that sees bad chars.

The file you opened has some invalid characters. If you continue editing this file you could corrupt this document.
You can also choose another character encoding and try again.

I also found the following:
https://jar-download.com/artifacts/commons-io/commons-io/2.5/source-code/org/apache/commons/io/FilenameUtils.java

private static void failIfNullBytePresent(String path) {
        int len = path.length();
        for (int i = 0; i < len; i++) {
            if (path.charAt(i) == 0) {
                throw new IllegalArgumentException("Null byte present in file/path name. There are no " +
                        "known legitimate use cases for such data, but several injection attacks may use it");
            }
        }
    }
1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.