irpas技术客

vue项目采用sonarqube扫描代码_Alvin千里无风_sonarqube vue

网络 6212

安装包下载

zip包下载 sonarqube下载地址

项目启动

由于我使用的是windows系统,所以找到zip包中的D:\programs\sonarqube-9.2.1.49989\bin\windows-x86-64\StartSonar.bat, 进行启动。

成功启动后打开的控制台的内容

wrapper | --> Wrapper Started as Console wrapper | Launching a JVM... jvm 1 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org jvm 1 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved. jvm 1 | jvm 1 | 2021.12.13 14:33:39 INFO app[][o.s.a.AppFileSystem] Cleaning or creating temp directory D:\programs\sonarqube-9.2.1.49989\temp jvm 1 | 2021.12.13 14:33:39 INFO app[][o.s.a.es.EsSettings] Elasticsearch listening on [HTTP: 127.0.0.1:9001, TCP: 127.0.0.1:4510] jvm 1 | 2021.12.13 14:33:39 INFO app[][o.s.a.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [D:\programs\sonarqube-9.2.1.49989\elasticsearch]: C:\Program Files\Java\jdk-17.0.1\bin\java -XX:+UseG1GC -Djava.io.tmpdir=D:\programs\sonarqube-9.2.1.49989\temp -XX:ErrorFile=../logs/es_hs_err_pid%p.log -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dio.netty.allocator.numDirectArenas=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.locale.providers=COMPAT -Dcom.redhat.fips=false -Xmx512m -Xms512m -XX:MaxDirectMemorySize=256m -XX:+HeapDumpOnOutOfMemoryError -Delasticsearch -Des.path.home=D:\programs\sonarqube-9.2.1.49989\elasticsearch -Des.path.conf=D:\programs\sonarqube-9.2.1.49989\temp\conf\es -cp lib/* org.elasticsearch.bootstrap.Elasticsearch jvm 1 | 2021.12.13 14:33:39 INFO app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running jvm 1 | WARNING: A terminally deprecated method in java.lang.System has been called jvm 1 | WARNING: System::setSecurityManager has been called by org.elasticsearch.bootstrap.Elasticsearch (file:/D:/programs/sonarqube-9.2.1.49989/elasticsearch/lib/elasticsearch-7.14.1.jar) jvm 1 | WARNING: Please consider reporting this to the maintainers of org.elasticsearch.bootstrap.Elasticsearch jvm 1 | WARNING: System::setSecurityManager will be removed in a future release jvm 1 | WARNING: A terminally deprecated method in java.lang.System has been called jvm 1 | WARNING: System::setSecurityManager has been called by org.elasticsearch.bootstrap.Security (file:/D:/programs/sonarqube-9.2.1.49989/elasticsearch/lib/elasticsearch-7.14.1.jar) jvm 1 | WARNING: Please consider reporting this to the maintainers of org.elasticsearch.bootstrap.Security jvm 1 | WARNING: System::setSecurityManager will be removed in a future release jvm 1 | 2021.12.13 14:33:47 INFO app[][o.s.a.SchedulerImpl] Process[es] is up jvm 1 | 2021.12.13 14:33:47 INFO app[][o.s.a.ProcessLauncherImpl] Launch process[[key='web', ipcIndex=2, logFilenamePrefix=web]] from [D:\programs\sonarqube-9.2.1.49989]: C:\Program Files\Java\jdk-17.0.1\bin\java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=D:\programs\sonarqube-9.2.1.49989\temp -XX:-OmitStackTraceInFastThrow --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.management/sun.management=ALL-UNNAMED --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED -Dcom.redhat.fips=false -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -Dhttp.nonProxyHosts=localhost|127.*|[::1] -cp ./lib/sonar-application-9.2.1.49989.jar;D:\programs\sonarqube-9.2.1.49989\lib\jdbc\h2\h2-1.4.199.jar org.sonar.server.app.WebServer D:\programs\sonarqube-9.2.1.49989\temp\sq-process14026979473995193028properties jvm 1 | WARNING: A terminally deprecated method in java.lang.System has been called jvm 1 | WARNING: System::setSecurityManager has been called by org.sonar.process.PluginSecurityManager (file:/D:/programs/sonarqube-9.2.1.49989/lib/sonar-application-9.2.1.49989.jar) jvm 1 | WARNING: Please consider reporting this to the maintainers of org.sonar.process.PluginSecurityManager jvm 1 | WARNING: System::setSecurityManager will be removed in a future release jvm 1 | 2021.12.13 14:34:17 INFO app[][o.s.a.SchedulerImpl] Process[web] is up jvm 1 | 2021.12.13 14:34:17 INFO app[][o.s.a.ProcessLauncherImpl] Launch process[[key='ce', ipcIndex=3, logFilenamePrefix=ce]] from [D:\programs\sonarqube-9.2.1.49989]: C:\Program Files\Java\jdk-17.0.1\bin\java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djava.io.tmpdir=D:\programs\sonarqube-9.2.1.49989\temp -XX:-OmitStackTraceInFastThrow --add-opens=java.base/java.util=ALL-UNNAMED --add-exports=java.base/jdk.internal.ref=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.management/sun.management=ALL-UNNAMED --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED -Dcom.redhat.fips=false -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -Dhttp.nonProxyHosts=localhost|127.*|[::1] -cp ./lib/sonar-application-9.2.1.49989.jar;D:\programs\sonarqube-9.2.1.49989\lib\jdbc\h2\h2-1.4.199.jar org.sonar.ce.app.CeServer D:\programs\sonarqube-9.2.1.49989\temp\sq-process11723127385223217487properties jvm 1 | 2021.12.13 14:34:18 WARN app[][startup] #################################################################################################################### jvm 1 | 2021.12.13 14:34:18 WARN app[][startup] Default Administrator credentials are still being used. Make sure to change the password or deactivate the account. jvm 1 | 2021.12.13 14:34:18 WARN app[][startup] #################################################################################################################### jvm 1 | WARNING: A terminally deprecated method in java.lang.System has been called jvm 1 | WARNING: System::setSecurityManager has been called by org.sonar.process.PluginSecurityManager (file:/D:/programs/sonarqube-9.2.1.49989/lib/sonar-application-9.2.1.49989.jar) jvm 1 | WARNING: Please consider reporting this to the maintainers of org.sonar.process.PluginSecurityManager jvm 1 | WARNING: System::setSecurityManager will be removed in a future release jvm 1 | 2021.12.13 14:34:21 INFO app[][o.s.a.SchedulerImpl] Process[ce] is up jvm 1 | 2021.12.13 14:34:21 INFO app[][o.s.a.SchedulerImpl] SonarQube is up

系统默认启动的web服务页面在当前系统的9000端口,访问http://127.0.0.1:9000/进入登录页面,默认的账号密码都是:admin。

创建项目

在首页找到create Project 创建一个Manually项目,选择Locally,因为我采用的是本地的代码

生成token,然后选择项目的语言,操作系统,我这里使用的是JavaScript Vue项目和windows,拿到生成的sonar.projectKey、sonar.login和sonar.host.url等字段,到这里服务器端的sonarqube已经配置好了。

扫描项目

首先安装sonar-scanner全局安装

cnpm i -g sonar-scanner

进去自己的JavaScript项目的根目录下,添加文件sonar-project.properties,大概配置如下:

# 本地自己起的sonarqube服务地址 sonar.host.url=http://127.0.0.1:9000/ sonar.login=a3d88c9bede392a64c46c40ffd62507fdb96b766 sonar.projectKey=test-project # 中文的字段需要用Unicode转码,展示到sonarqube的web中才不会乱码 sonar.projectName=\u6d4b\u8bd5\u9879\u76ee # 公共可用的配置项 sonar.projectVersion=1.0 sonar.sourceEncoding=UTF-8 sonar.sources=./src sonar.exclusions=/node_modules/ sonar.tests=./src sonar.test.inclusions=**/*.spec.ts

然后直接在当前根目录下运行shell命令:

sonar-scanner

等运行结束后就可以得到项目的分析结果了,命令行可以看到分析结果的地址:

INFO: ANALYSIS SUCCESSFUL, you can browse http://127.0.0.1:9000/dashboard?id=bt-frontend-pc 扫描结果的一些概念

官网文档

拷贝一些翻译的内容:

Concept概念定义bug漏洞表示代码中出现错误的问题。如果这还没有打破,它会,而且可能是在最糟糕的时刻。这需要修复。昨天。Code Smell代码气味代码中与可维护性相关的问题。保持原样意味着维护人员充其量将比对代码进行更改更难。最糟糕的是,他们会对代码的状态感到困惑,以至于在进行更改时会引入额外的错误。Cost成本查看修复成本Debt债务见技术债Issue问题当一段代码不符合规则时,快照会记录一个问题。问题可以记录在源文件或单元测试文件中。有 3 种类型的问题:错误、代码异味和漏洞Measure措施给定时间给定文件或项目的度量值。例如,类 MyClass 上的 125 行代码或项目 myProject 上 30.5% 的重复行密度Metric公制一种测量。随着时间的推移,指标可以具有不同的值或度量。示例:代码行数、复杂性等。度量可以是定性的(给出组件的质量指示、重复行的 EG 密度、测试的行覆盖率等)或定量的(不给出质量指示)在组件上,EG 代码行数,复杂度等)New Code definition新代码定义您密切关注代码中引入新问题的变更集或时期。理想情况下,这是因为previous_version,但如果您不使用类Quality Profile质量简介一套规则。每个快照都基于单个质量配置文件。另见质量概况Rule规则应遵循的编码标准或实践。不遵守编码规则会导致错误、漏洞、安全热点和代码异味。规则可以检查代码文件或单元测试的质量。Remediation Cost修复成本修复漏洞和可靠性问题所需的估计时间。Snapshot快照在给定时间针对给定项目的一组措施和问题。每次分析都会生成一个快照。Security Hotspot安全热点需要手动审查的安全敏感代码段。经过审查,您要么会发现不存在威胁??,要么会发现存在需要修复的易受攻击的代码。Technical Debt技术债修复所有可维护性问题/代码异味所需的估计时间Vulnerability漏洞一个与安全相关的问题,代表攻击者的后门。另请参阅安全相关规则。
开始查看扫描结果

然后就快乐的查看sonarqube中扫描出来的问题,并开始快乐的解决问题了,javascript的扫描规则。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #sonarqube #Vue