sonarQube对代码进行静态扫描

sonarQube是一个代码质量和安全性检测工具,社区版免费,可以帮助开发人员在开发阶段就避免各种质量和安全的问题。

1、安装

官网地址:https://www.sonarqube.org/
可以直接下载运行,bin目录下有各个系统的运行脚本,包括linux、mac、windows,不过运行的时候需要确认本地的JDK版本,7.7以上都需要JDK11。或者使用跑在k8s上面,yaml如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: r3-sonar-qube
  name: r3-sonar-qube
  namespace: common
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: r3-sonar-qube
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: r3-sonar-qube
    spec:
      containers:
        - env:
            - name: LANG
              value: en_US.UTF-8
            - name: LANGUAGE
              value: 'en_US:en'
            - name: LC_ALL
              value: en_US.UTF-8
            - name: JAVA_HOME
              value: /opt/java/openjdk
            - name: SONARQUBE_HOME
              value: /opt/sonarqube
            - name: SQ_DATA_DIR
              value: /opt/sonarqube/data
            - name: SQ_EXTENSIONS_DIR
              value: /opt/sonarqube/extensions
            - name: SQ_LOGS_DIR
              value: /opt/sonarqube/logs
            - name: SQ_TEMP_DIR
              value: /opt/sonarqube/temp
            - name: SONARQUBE_JDBC_URL
              value: >-
                jdbc:mysql://rm-uf61ldmcjuyy58370to.mysql.rds.aliyuncs.com:3306/sonar?useSSL=false&useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
            - name: SONARQUBE_JDBC_USERNAME
              value: sonar
            - name: SONARQUBE_JDBC_PASSWORD
              value: Burgeon123
          image: 'sonarqube:7.8-community'
          imagePullPolicy: Always
          name: r3-sonar-qube
          ports:
            - containerPort: 9000
              protocol: TCP
          resources:
            requests:
              cpu: 250m
              memory: 512Mi
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
status:
  availableReplicas: 1
  conditions:
    - lastTransitionTime: '2020-06-15T08:58:44Z'
      lastUpdateTime: '2020-06-28T13:18:37Z'
      message: ReplicaSet "r3-sonar-qube-5c6c764c" has successfully progressed.
      reason: NewReplicaSetAvailable
      status: 'True'
      type: Progressing
    - lastTransitionTime: '2020-07-03T17:28:19Z'
      lastUpdateTime: '2020-07-03T17:28:19Z'
      message: Deployment has minimum availability.
      reason: MinimumReplicasAvailable
      status: 'True'
      type: Available
  observedGeneration: 9
  readyReplicas: 1
  replicas: 1
  updatedReplicas: 1

这里建了一个数据库给sonar用,如果不建库的话默认会使用内置的数据库;
在这里插入图片描述

2、本地扫描修复

如果是IDEA的话则可以下载sonarlint插件,ctrl+shift+s,就可以进行本代码扫描,扫描规则可以在本地IDEA进行配置;
在这里插入图片描述
但是该插件并不会同步扫描结果到sonarQube,即使本地配置了sonarQube的地址及相关信息,不确定是缺陷还是本身就不支持。
如果需要将本地的修复结果同步,则可以使用maven打包的方式同步,修改setting.xml
1.增加插件节点

<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>

2.增加profile节点

<profile>
        <id>sonar</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <sonar.host.url>
                  http://47.100.190.150:9000
                </sonar.host.url>
    		</properties>
</profile>  

3.在maven工程的项目pom添加插件引用

 <build>
        <plugins>
            <plugin>
                <groupId>org.sonarsource.scanner.maven</groupId>
                <artifactId>sonar-maven-plugin</artifactId>
                <version>3.6.0.1398</version>
            </plugin>
        </plugins>
</build>

4.reimport后则会出现sonar的打包按钮
在这里插入图片描述
点击后开始扫描分析上传,如果sonarQube上没有该项目,则会自动创建一个新的;
sonar的扫描分析等级由高到低:Blocker>Critical>Major>Minor>Info

3、Jenkins发布自动扫描

Jenkins结合sonar比较简单
maven打包的时候加上soanr的server地址就行

mvn clean package install sonar:sonar -Dsonar.host.url=http://47.100.190.150:9000
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值