Still in the evaluation stage, I am setting up a SonarQube flow for the first time. This is for our embedded software C projects which are targeted at the Xilinx MicroBlaze platform. I am setting up a project in Jenkins (but first running locally on the Jenkins machine to debug the flow).
Where my tcl file uses the commands “importprojects”, “projects -clean”, and “projects -build”. All of the above works correctly and and an output directory with the build wrapper log and json file is generated. I have attached these as text files. build-wrapper_log.txt (834.3 KB) build-wrapper-dumpjson.txt (350.1 KB)
I believe a user has previously used XSDK with SonarQube for analysis - see Sonarqube Problems after Upgrade 8.0. However I don’t know if I am running into the same problem, as the JSON file generated in this step seems to be several hundreds of KB. Could you check if the output is as expected? I don’t know what to look for.
I ran the following command locally on our Jenkins server, which calls Sonar Scanner for Jenkins: C:\j_Embed_SW\tools\hudson.plugins.sonar.SonarRunnerInstallation\SonarScanner\bin\sonar-scanner.bat -Dsonar.host.url=url -Dsonar.projectKey=projectkey -Dsonar.cfamily.build-wrapper-output=build_wrapper_output_dir -Dsonar.host.url=http://10.62.240.200:9000 -Dsonar.sources=path-to-source
This runs OK and I can see in the output that 38 C files have been indexed, which is correct.
However, I get
ERROR: Error during SonarQube Scanner execution
java.lang.IllegalStateException: The “build-wrapper-dump.json” file was found but 0 C/C++/Objective-C files were analyzed. Please make sure that:
you are using the latest version of the build-wrapper and the SonarCFamily analyzer
you are correctly invoking the scanner with correct configuration
your compiler is supported
you are wrapping your build correctly
you are wrapping a full/clean build
you are providing the path to the correct build-wrapper output directory
you are building and analyzing the same source checkout, absolute paths must
be identical in build and analysis steps
It would be great to get another pair of eyes on this, to check if I’m running into the same problem as the post linked above, or if this is a separate issue.
looking at your files I see some files compiled in the build-wrapper-dump.json file but not the ones belonging to your SonarQube project listed in the sonarlog.txt. You can check yourself in build-wrapper-dump.json file.
Thanks for the tip. It looks like the files associated with the board support package are being compiled and in the json file, but not the application source files. I will investigate this and let you know if I find a solution.
I have been able to clean-build the sources in the application project now, in addition to the BSP project sources which were being compiled previously. (I had to modify my Tcl script to include a file deletion, to remove the elf file which was being copied into the workspace, leading the tool to skip the build altogether.) The compilation log is here - xsdk_build.txt (75.3 KB)
The build wrapper log file is here - build-wrapper_log.txt (1006.6 KB) The new JSON dump - build-wrapper-dump_json.txt (447.0 KB) - now mentions source files from the application project - although I’m not sure if it has got the full list of sources.
However, as you will see in the scanner log file, the problem still exists and 0 files have been found for analysis. sonarlog.txt (284.3 KB)
Do you think it may be the same problem as the post I previously linked, that the build is not being tracked correctly? Maybe I should attempt to just use “make”?
The paths are not the same and there is no match and that’s why you get the 0 compilation units analyzed... error. Do you have an idea of what could be happening?
Yes, thank you for pointing that out. Again, I think it has to do with how the Xilinx Tcl-based compilation flow works. It looks like it creates a copy of the entire project in a new area.
I’m just back on this now with a full licence and will continue to investigate the issue. Please can we leave this ticket open? Thank you.
I worked out that the problem was there was a space in the directory name, which causes the Xilinx SDK build tool to create a new workspace (with the first part of the directory name as the workspace name)! Having fixed this has resolved the issue with the duplicated files and the flow is now up & running. Thanks for your help with the debug.