栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

windows下 sonarqube扫描c++代码

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

windows下 sonarqube扫描c++代码

环境:

sonarqube:7.7

mysql:5.7

cppcheck

sonar-scanner-4.6.2472

jdk:1.8

插件sonar-cxx-plugin

原理:

只使用sonar-scanner是无法扫描c++,sonar-cxx插件本身是不会运行任何静态代码分析工具的,cppcheck、Valgrind等,所以需要确保在分析之前生成报告,所以集成每个静态分析工具的思路其实就是先使用工具给你的代码在本地扫一遍,并生成相应的报告(xml等),然后通过sonar-cxx插件使这些报告与sonarqube的代码规则进行匹配并上传到sonarqube上显示出来,供我们查看

步骤:

1.安装mysql jdk,配置相应环境变量

2.下载cppcheck并安装,配置环境变量

3.解压缩sonar-scanner,配置环境变量

4.解压缩sonarqube,并将sonar-cxx-plugin放到extensions/plugins下面

5.配置sonarqube/conf下的sonar.properties,

 

其中标红的地方为mysql创建的sonarqube的数据库名称

6.配置sonarscanner/conf下的sonar-scanner.properties文件

 

7.项目扫描的根目录下新增一个sonar-project.properties文件

 

标红的地方一定要配置,要不然会报错下面错误

8.先运行cppcheck --xml --xml-version=2 --enable=all ./ 2>cppcheck.report.xml,先生成cppcheck.report.x

9.执行sonar-scanner 去执行,然后打开localhost:9000,即可看到扫描结果

最后,如果upload报告报以下错误:

ERROR: Error during SonarQube Scanner execution

ERROR: Failed to upload report - An error has occurred. Please contact your administrator

则去web.log下面看到提示:

ERROR web[AWmZRNUwXbi+lsl9AAH0][o.s.s.w.WebServiceEngine] Fail to process request http://10.0.27.13:9000/api/ce/submit?projectKey=proKey&projectName=proName

java.lang.IllegalStateException: Fail to insert data of CE task AWmd77ZUi0dEtE_V6reH

at org.sonar.db.ce.CeTaskInputDao.insert(CeTaskInputDao.java:56)

at org.sonar.server.ce.queue.ReportSubmitter.submitReport(ReportSubmitter.java:189)

at org.sonar.server.ce.queue.ReportSubmitter.submit(ReportSubmitter.java:89)

at org.sonar.server.ce.ws.SubmitAction.handle(SubmitAction.java:121)

at org.sonar.server.ws.WebServiceEngine.execute(WebServiceEngine.java:110)

at org.sonar.server.ws.WebServiceFilter.doFilter(WebServiceFilter.java:88)

at org.sonar.server.platform.web.MasterServletFilter$GodFilterChain.doFilter(MasterServletFilter.java:126)

at org.sonar.server.platform.web.MasterServletFilter.doFilter(MasterServletFilter.java:95)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.sonar.server.user.UserSessionFilter.doFilter(UserSessionFilter.java:87)

at org.sonar.server.user.UserSessionFilter.doFilter(UserSessionFilter.java:71)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.sonar.server.platform.web.CacheControlFilter.doFilter(CacheControlFilter.java:76)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.sonar.server.platform.web.SecurityServletFilter.doHttpFilter(SecurityServletFilter.java:76)

at org.sonar.server.platform.web.SecurityServletFilter.doFilter(SecurityServletFilter.java:48)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.sonar.server.platform.web.RedirectFilter.doFilter(RedirectFilter.java:61)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.sonar.server.platform.web.requestid.RequestIdFilter.doFilter(RequestIdFilter.java:63)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.sonar.server.platform.web.RootFilter.doFilter(RootFilter.java:62)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)

at ch.qos.logback.access.tomcat.LogbackValve.invoke(LogbackValve.java:256)

at org.apache.catalina.core.StandardEnginevalve.invoke(StandardEnginevalve.java:87)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)

at org.apache.tomcat.util.net.SocketProcessorbase.run(SocketProcessorbase.java:49)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:748)

Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (18307204 > 16777216). You can change this value on the server by setting the max_allowed_packet' variable.

at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3681)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2512)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2486)

at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858)

at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2079)

at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2013)

at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5104)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1998)

at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:136)

at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:136)

at org.sonar.db.ce.CeTaskInputDao.insert(CeTaskInputDao.java:53)

... 48 common frames omitted

那么去MYSQL的安装路径下,一般是到服务中找到mysql服务,右键属性,找到可执行文件的路径,即找到mysql.ini文件,修改max_allowed_packet = 64M

重启mysql sonarqube

重新执行sonar-scanner,可成功上传sonar report

等待sonar-server执行完分析后,即可在sonar web中查看报告

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/689928.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号