前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >自动化 DevOps 使用 Codeclimate 执行代码质量分析

自动化 DevOps 使用 Codeclimate 执行代码质量分析

作者头像
哎_小羊
发布于 2019-05-25 11:48:33
发布于 2019-05-25 11:48:33
3.4K10
代码可运行
举报
文章被收录于专栏:哎_小羊哎_小羊
运行总次数:0
代码可运行

目录

    • 1、Codeclimate 介绍
    • 2、环境、软件准备
    • 3、Codeclimate 安装
    • 4、Codeclimate 基本命令使用
    • 5、Codeclimate 高级使用
    • 6、Auto DevOps 流程使用 Codeclimate

1、Codeclimate 介绍

Codeclimate 是为代码质量分析平台提供的一个命令行接口工具,通过它可以在本机 Docker 容器中对要分析的代码执行质量分析,并生成分析报告。我们熟知常用的代码质量检测工具例如 SonarQube、CheckStyle 等等,而 Codeclimate 是这些各种代码类型质量分析工具的集合,而且支持我们自定义检测工具,命令行简单,非常方便操作。我们可以使用 Codeclimate 进行代码质量分析,并将其作为持续集成流程中的一个环节,是很有必要的。

2、环境、软件准备

本次演示环境,我是在本机 Mac OX 上操作,以下是安装的软件及版本:

  1. Docker:version 17.03.1-ce
  2. Codeclimate:version 0.71.2

注意:这里 Codeclimate 是需要依赖本地 Docker 容器来运行执行代码分析的,所以需要提前安装好 Docker, 这里忽略 Docker 的安装过程。

3、Codeclimate 安装

Codeclimate 的安装很简单,如果本机安装了 Docker,那么最简单的安装方式就是下载 Codeclimate 镜像就可以直接运行了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ docker pull codeclimate/codeclimate

$ docker run \
>   --interactive --tty --rm \
>   --env CODECLIMATE_CODE="$PWD" \
>   --volume "$PWD":/code \
>   --volume /var/run/docker.sock:/var/run/docker.sock \
>   --volume /tmp/cc:/tmp/cc \
>   codeclimate/codeclimate help
Usage: codeclimate COMMAND ...

Available commands:
    analyze [-f format] [-e engine[:channel]] [path]    Run analysis with the given arguments
    console                                             Open a ruby console for the CLI. Useful for developing against the CLI.
    engines:install                                     Pull the latest images for enabled engines in your configuration
    engines:list                                        List all available engines
    help [command]                                      Display help information.
    prepare [--allow-internal-ips]                      Run the commands in your prepare step.
    validate-config                                     Validate your .codeclimate.yml or .codeclimate.json.
    version                                             Display the CLI version.

这样就使用 Codeclimate 运行了 help 命令,我们可以看到打印出来的 Codeclimate 帮助文档。当然,这样操作会觉得比较麻烦,不太方便,我们还可以通过另外几种方式安装到机器上。

  • brew 安装
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 安装
brew tap codeclimate/formulae
brew install codeclimate
# 更新升级
brew update
brew upgrade codeclimate
  • 二进制编译安装
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -L https://github.com/codeclimate/codeclimate/archive/master.tar.gz | tar xvz
cd codeclimate-* && sudo make install

安装完毕之后,通过命令行 codeclimate help 即可查看命令行帮助文档。

4、Codeclimate 基本命令使用

Codeclimate 是一个命令行工具集,通过 codeclimate help 命令可以列举出 Codeclimate 所有的可用命令,下边针对这些命令简单的说明一下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ codeclimate help
Usage: codeclimate COMMAND ...

Available commands:
    analyze [-f format] [-e engine[:channel]] [path]    Run analysis with the given arguments
    console                                             Open a ruby console for the CLI. Useful for developing against the CLI.
    engines:install                                     Pull the latest images for enabled engines in your configuration
    engines:list                                        List all available engines
    help [command]                                      Display help information.
    prepare [--allow-internal-ips]                      Run the commands in your prepare step.
    validate-config                                     Validate your .codeclimate.yml or .codeclimate.json.
    version                                             Display the CLI version.
  • analyze 该命令会在当前目录下,执行代码分析。注意这里存在一个配置文件 .codeclimate.yml,该文件是配置 Codeclimate 执行本次分析所设置的所有引擎列表,待会下边我会讲该如何使用该配置文件。它还有几个可选参数 -f(format) 表示设置本次分析结果输出格式,它支持(jsontexthtml)三种格式输出。-e 表示本次执行使用哪种分析引擎,例如 -e checkstyle 则表示本次使用 CheckStyle 引擎来执行分析。-dev 表示以开发模式进行调试,当我们使用自定义引擎来测试时,可以使用。另外一个很重要的参数 exclude_paths,表示排除某些目录不进行分析,默认会遍历当前所有目录。
  • console 该命令会开启一个交互式会话,来提供对 CLI 内部 Class 的访问,对开发人员比较有用。
  • engines:install 该命令会比较配置文件 .codeclimate.yml 中的引擎配置,来更新已经安装的引擎镜像到最新版,同时拉取本地未安装的引擎镜像到本地。
  • engines:list 该命令会打印出所有可用的引擎列表,可以从 CodeClimate Docker Hub 中查看各个引擎镜像列表。
  • validate-config 该命令会验证 .codeclimate.yml 配置文件是否有问题。
  • version 该命令查看当前 Codeclimate 版本信息。

好了,简单介绍了一下 Codeclimate 的基本命令,接下来我们来使用一下该命令行来执行代码分析吧!

首选我们创建一个测试的文件夹,生成一个 PHP 类型代码文件,使用命令行对其进行代码分析。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ mkdir test
$ cd test
$ cat test.php
<?php

/**
 * 首页
 */

class MobileController extends AbstractController {

    public $authorize = self::MAYBE_LOGIN;
    public $init_viewer = true;

    public function indexAction() {
        $page = new Page_Mobile_Home();
        $this->render_page($page);

    }
}

# 使用 json 输出方式,使用 phpmd 引擎来执行分析
$ codeclimate analyze -f json -e phpmd
[{"type":"issue","check_name":"Controversial/CamelCasePropertyName","description":"The property $init_viewer is not named in camelCase.","categories":["Style"],"remediation_points":500000,"location":{"path":"test.php","lines":{"begin":8,"end":18}},"content":{"body":"\nSince: PHPMD 0.2\n\nIt is considered best practice to use the camelCase notation to name attributes.\n\n\nExample:\n\n```php\n\n  class ClassName {\n      protected $property_name;\n  }\n\n\n```\n\nSource: http://phpmd.org/rules/controversial.txt"},"fingerprint":"56027498261b4b1ca168bb3fe849c290","engine_name":"phpmd","severity":"minor"}]

可以看到,已经生成了 json 格式的检测结果,不过不太直观查看输出结果,我们可以使用 html 格式输出结果,并生成到当前目录指定文件 result.html 中,然后通过浏览器访问即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ codeclimate analyze -f html -e phpmd > result.html

浏览器打开 result.html 文件,我们可以清晰的看到分析结果。

当然,不同的引擎检查结果有而不太一样,例如同样的 PHP 代码,我们换另一个引擎 phan 来分析看下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ codeclimate analyze -f html -e phan > result_phan.html

我们发现,分析的结果条目增多了,说明不同的引擎执行分析的规则不一样,导致检测的结果也不一样了,实际应用中,我们可以选择某一个分析比较全的引擎,或者是选择多个引擎分析,获取多个检测结果,待会下边会讲到。

上边我们讲到 Codeclimate 使用本机 Docker 容器对当前目录代码执行质量分析的,我们可以验证一下是否如此,我们在执行上述命令的时候,可以在新开客户端窗口中执行 docker ps 命令查看是否有对应容器运行。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ docker ps
CONTAINER ID        IMAGE                     COMMAND                  CREATED                  STATUS                  PORTS                                              NAMES
65282e7c8857        codeclimate/codeclimate   "/usr/src/app/bin/co…"   Less than a second ago   Up Less than a second                                                      trusting_mestorf

$ docker images
REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
codeclimate/codeclimate                latest              bc2aa56b8520        2 weeks ago         97.7MB
codeclimate/codeclimate-phan           latest              045ea1dac22d        4 months ago        70.9MB
codeclimate/codeclimate-phpmd          latest              9d7a53405aa0        11 months ago       37MB

我们可以看到,确实是有运行本机 Docker 容器中,而且分析完毕后,容器自动销毁。如果我们不太清楚 Codeclimate 支持那些可用引擎的话,可以使用命令行 codeclimate engines:list 查看。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ codeclimate engines:list
Available engines:
- apexmetrics: ApexMetrics is a static code analysis tool for Salesforce.com Apex.
- brakeman: A static analysis tool which checks Ruby on Rails applications for security vulnerabilities.
- bundler-audit: Patch-level verification for Bundler.
- checkstyle: Helps programmers write Java that adheres to a coding standard.
- codescan: A static analysis tool for Salesforce.com Apex, Visual Force, Aura and Lightning.
- coffeelint: A style checker for CoffeeScript.
- credo: A static code analysis tool for the Elixir language with a focus on code consistency and teaching.
- csslint: Automated linting of Cascading Stylesheets.
- duplication: Structural duplication detection for Ruby, Python, Java, JavaScript, and PHP.
- eslint: A JavaScript/JSX linting utility.
- fixme: Finds FIXME, TODO, HACK, etc. comments.
- flog: Easy to read reporting of complexity/pain for Ruby code.
- foodcritic: Lint tool for Chef cookbooks.
- git-legal: License compliance and compatibility analysis.
- gnu-complexity: Checks complexity of C code.
- gofmt: Checks the formatting of Go programs.
- golint: A linter for Go.
- govet: Reports suspicious constructs in Go programs.
- grep: Detects specified patterns in files.
- haml-lint: A tool for writing clean and consistent HAML.
- haxe-checkstyle: Checkstyle is a development library to help developers write Haxe code that adheres to a coding standard.
- hlint: A linter for Haskell programs.
- kibit: Static code analyzer for Clojure, ClojureScript, cljx and other Clojure variants.
- markdownlint: Flags style issues within Markdown files.
- nodesecurity: Security tool for Node.js dependencies.
- pep8: Static analysis tool to check Python code against the style conventions outlined in PEP-8.
- phan: Phan is a static analyzer for PHP.
- phpcodesniffer: Detects violations of a defined set of coding standards in PHP.
- phpmd: A PHP static analysis tool.
- pmd: A source code analyzer for Java.
- proselint: A linter for prose.
- radon: Python tool used to compute Cyclomatic Complexity.
- reek: Reek examines Ruby classes, modules, and methods and reports any code smells it finds.
- requiresafe: Security tool for Node.js dependencies.
- rubocop: A Ruby static code analyzer, based on the community Ruby style guide.
- rubymotion: Rubymotion-specific rubocop checks.
- rustfmt: A tool for formatting Rust code according to style guidelines.
- scss-lint: A configurable tool for writing clean and consistent SCSS.
- shellcheck: A static analysis tool for shell scripts.
- sonar-java: Over 400 checks for bugs, vulnerabilities, and code smells in Java code.
- sonar-php: SonarLint for PHP.
- sonar-python: SonarLint for Python.
- structure: Performs structural checks on code.
- stylelint: A mighty, modern CSS linter.
- swiftlint: A tool to enforce Swift style and conventions.
- tailor: Cross-platform static analyzer and linter for Swift.
- tslint: An extensible linter for the TypeScript language
- vint: Fast and Highly Extensible Vim script Language Lint implemented by Python.
- watson: A young Ember Doctor to help you fix your code.

可以从支持的列表中选择对应代码语言的检测引擎,例如针对 Java 语言,可使用 checkstyle、duplication、pmd、sonar-java 这几个引擎。

5、Codeclimate 高级使用

上边提到过,对于包含了多种类型语言代码的项目,例如:Java、Html、CSS、JS等等 如果要执行全面的质量分析,那么就需要指定多个引擎来分析了,上边的基本使用中,我们使用命令行 -e 参数指定了一种类型来执行分析,可以使用 .codeclimate.yml 配置文件来指定引擎来分析。我们先看下该配置文件的写法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cat .codeclimate.yml
version: "1"
plugins:
  phpmd:
    enabled: false
  phan:
    enabled: true
  shellcheck:
    enabled: true

该配置文件定义了三个引擎 phpmd、phan、shellcheck 并且关闭 shellcheck 引擎检测,意味着使用该配置文件执行代码分析时,会只执行 phan、shellcheck 引擎检测。此时我们通过命令行执行 codeclimate analyze -f html > result_yml.html 即可完成检测。为了方便演示,我们增加一个 test.sh 和一个 Test.java 文件到当前目录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cat test.sh
#!/bin/bash

name="This is shell test."
echo "name=${name}"

if [ -z "${version}" ]; then
    echo "version is empty, exit"
    exit 1
fi

$ cat Test.java
package test.hwy;

public class Test {

    public static String getSameEndChart(String[] args){
        String result = "";
        if(args.length > 1){
            int args_length = args.length;
            String first = args[0];
            int first_length = first.length();
            for(int j=1;j <= first_length;j++){
                String a = first.substring(first_length-j, first_length);
                for(int i=1;i < args_length;i++){
                    String b = args[i];
                    int b_length = b.length();
                    if(b_length >= j){
                        String c = b.substring(b_length-j, b_length);
                        if(a.equals(c)){
                            result = a;
                        }else{
                            System.out.println("args 第" + (i+1) + "个字符串尾数字符串"+c+"不匹配首字符串尾字符"+a);
                            result = first.substring(first_length-j+1, first_length);
                            return result;
                        }
                    }else{
                        System.out.println("args 第" + (i+1) + "个字符串长度不够,忽略比较。");
                        result = first.substring(first_length-j+1, first_length);
                        return result;
                    }
                }
            }
        }
        return result;
    }

    public static void main(String[] args) {
        String[] ss = {"123456", "14456", "00123456", "456"};
        System.out.println(getSameEndChart(ss));
    }
}

$ codeclimate analyze -f html > result_yml.html

我们来看下 result_yml.html 文件是否执行了配置的引擎分析,从页面可以明显的看到,Engine 下拉框中有三种引擎可选择 phan、shellcheck、structure,而且选择对应的 Engine 可以切换显示该引擎对应的检测结果。

这里会有人问了,为什么我没有配置 structure 但是却执行了该引擎分析呢?这里要说明一下,当我们第一次执行上边命令行是,会提示响应超时失败,这是因为它需要拉取该引擎对应的镜像需要花些时间,而且默认会拉取 codeclimate/codeclimate-duplicationcodeclimate/codeclimate-structure 这两个镜像,这两个镜像都挺大的,导致拉取时间超时。此时我们可以通过命令行 codeclimate engines:install 执行安装,安装完毕后,就可以执行上边命令行了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ codeclimate engines:install
Pulling docker images.
latest: Pulling from codeclimate/codeclimate-structure
2a72cbf407d6: Already exists
a3ed95caeb02: Pulling fs layer
......
Digest: sha256:b6ee14587a178b1e462202779579affd9186e2be8ca94b141f3c09a3c8862b71
Status: Downloaded newer image for codeclimate/codeclimate-structure:latest
latest: Pulling from codeclimate/codeclimate-duplication
2a72cbf407d6: Already exists
a3ed95caeb02: Pulling fs layer
......
Digest: sha256:a2355a74fb4134b526716a3416b9e841cebbadcfe72f240308686c5ebf424171
Status: Downloaded newer image for codeclimate/codeclimate-duplication:latest
latest: Pulling from codeclimate/codeclimate-phpmd
244d757dc677: Already exists
......
Digest: sha256:799d7eb629cfad2ee35a3f0e8a45fda34edf40bd92a43b0f06ac5505ca81ffc6
Status: Image is up to date for codeclimate/codeclimate-phpmd:latest
latest: Pulling from codeclimate/codeclimate-phan
1160f4abea84: Already exists
......
Status: Image is up to date for codeclimate/codeclimate-phan:latest
latest: Pulling from codeclimate/codeclimate-shellcheck
c19324d1d971: Already exists

$ docker images
REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
codeclimate/codeclimate-duplication    latest              a864651fe3d2        7 days ago          2.36GB
codeclimate/codeclimate-structure      latest              d12a28ef9ccc        8 days ago          2.35GB
codeclimate/codeclimate                latest              bc2aa56b8520        2 weeks ago         97.7MB
codeclimate/codeclimate-phan           latest              045ea1dac22d        4 months ago        70.9MB
codeclimate/codeclimate-shellcheck     latest              c46113b2195f        5 months ago        57.8MB
codeclimate/codeclimate-phpmd          latest              9d7a53405aa0        11 months ago       37MB

而且从上边 codeclimate engines:list 命令行显示的引擎列表说明可以得到如下信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- duplication: Structural duplication detection for Ruby, Python, Java, JavaScript, and PHP.
- structure: Performs structural checks on code.

该引擎是对代码结构执行结构检测用的,如果我们不想使用该插件,可以在配置文件中设置该插件不开启 enabled: false 即可。

好了,如果现在我们需要针对某些目录或者文件不执行检测,该如何配置呢?Codeclimate 也是可以配置的,只需要在 .codeclimate.yml 配置文件中配置 exclude_paths 即可,接下来在当前目录增加一个 a.sh,同时增加一个 others 文件下,在该文件夹下新增 a.php 文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ mkdir others
$ cat others/a.php
<?php
abc;
$array = array(
    "foo" => "bar",
    42    => 24
    "multi" => array(
         "dimensional" => array(
             "array" => "foo"
         )
    )
);

var_dump($array["foo"][]);
var_dump($array[43]);
var_dump($array["multi"]["dimensional"]["array"]);

$ cat a.sh
#!/bin/bash

#./codeclimate.sh > ./result.html

echo $name
codeclimate analyze -f html -e phan

OK 为了方便对比结果,在修改 .codeclimate.yml 配置文件之前,我们先执行本次分析看下输出的结果如何吧!

接下来我们修改下 .codeclimate.yml 配置文件,增加 exclude_paths 配置,排除 others/a.php 和 当前目录 a.sh 文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
version: "1"
plugins:
  phpmd:
    enabled: false
  structure:
    enabled: false
  phan:
    enabled: true
    exclude_paths:
      - others/a.php
  shellcheck:
    enabled: true
    exclude_paths:
      - a.sh

再次执行分析命令 codeclimate analyze -f html > result_yml_new.html,查看本次生成的结果页面是否排除了对上述文件的分析吧。

妥妥的排除在外了。当然,这样针对某些引擎过滤某些文件或者路径固然是好,但是当要排除的文件过多时,或者说某些目录对所有的引擎都排除在外,不进行分析时,就不太方便啦!Codeclimate 当然也是支持这种方式的,也是修改 .codeclimate.yml 配置文件,增加 exclude_patterns 项配置即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
version: "1"
plugins:
  phpmd:
    enabled: false
  ......
exclude_patterns:
  - others/
  - exclude_dir/**/*
  - exclude_another_dir/**/*

类似如上配置即可过滤指定目录,这里我就不在演示了。

6、Auto DevOps 流程使用 Codeclimate

我们知道在自动化开发运维流程中,或者是持续集成流程中,对代码执行质量检测分析,是非常有必要的一步,它可以有效避免由于误操作而导致的代码问题,可以持续改善程序猿代码风格和水平,同时能够在上线前及时发现隐藏的问题,降低由于代码问题导致的线上故障,总之,好处多多。那么这里我简单介绍一下两种方式,在自动化 DevOps 流程中使用 Codeclimate 来进行代码质量分析。

方式一:在持续集成流程中使用 Codeclimate + git 方式对代码进行全量或增量质量分析

此方案,通过在持续集成流程中构建完毕,新增一个质量分析节点,来完成对本次上线代码的全量或者增量分析。全量代码分析很简单,只需要 git checout 到指定 branch | tag 即可,对该项目下所有路径使用 Codeclimate 执行代码分析,生成 Html | Json 格式的检测结果,同时反馈到前端页面展示即可。但是对于代码量比较大的项目,执行一次全量会比较费时间,也不太方便有针对性的查看本次上线的代码分析,此时可以选择增量代码分析,意思就是只针对本次上线的代码执行分析即可,这里就需要使用到 git archive 命令检出上线增量包,然后使用 Codeclimate 执行代码分析,这里举个例子。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 例如线上版本为 v1.0.0 本次上线版本 v1.0.1,对本次上线增量文件执行检测,以 qd_api 为例。
$ git diff --name-only v1.0.0 v1.0.1
src/main/java/com/sina/qd/controller/MachineController.java
src/main/java/com/sina/qd/controller/PlatformTransferService.java
src/main/java/com/sina/qd/controller/ProjectInstanceController.java
src/main/java/com/sina/qd/utils/HttpClientUtil.java

# 使用 git archive 命令打包输出两个版本间的改变增量归档
# 大致的命令格式:git archive -o <path>/<filename.filetype> xxx(新提交 commit_id | tag) $(git diff --name-only yyy(旧提交 commit_id | tag) xxx) 
$ git archive -o /data0/latest.tar.gz v1.0.1 $(git diff --name-only v1.0.0 v1.0.1)

$ tar -zxvf /data0/latest.tar.gz -C /data0/latest
$ tree /data0/latest
latest
└── src
    └── main
        └── java
            └── com
                └── sina
                    └── qd
                        ├── controller
                        │   ├── MachineController.java
                        │   ├── PlatformTransferService.java
                        │   └── ProjectInstanceController.java
                        └── utils
                            └── HttpClientUtil.java

8 directories, 4 files

# 执行代码检测
$ cd /data0/latest
$ codeclimate analyze -f html -e sonar-java > result.html

这里简单演示了一下核心操作,实际操作中,可以更加丰富一下,比如流程开始前,可以选择全量 | 增量检测、勾线检测引擎来执行分析、选择输出的格式等等,通过这些勾选参数,我们可以通过模板生成一个 ..codeclimate.yml 配置文件执行代码分析等等

方式二:可以通过 GitLab CI 方式运行代码检测,会将检测结果自动上传并展示到 GitLab。

此方案,是 GitLab 新版本默认支持的方式,我们只需要修改配置 .gitlab-ci.yml 增加 Codequality Job 即可完成代码检测,前提是配置的 ci-runner 运行环境支持 docker。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cat .gitlab-ci.yml
...
codequality:
  image: docker:stable
  variables:
    DOCKER_DRIVER: overlay2
  allow_failure: true
  services:
    - docker:stable-dind
  script:
    - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
    - docker run
        --env SOURCE_CODE="$PWD"
        --volume "$PWD":/code
        --volume /var/run/docker.sock:/var/run/docker.sock
        "registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code
  artifacts:
    paths: [codeclimate.json]

这个是官网实例配置,会将生成的分析结果 codeclimate.json 并上传到 GitLab,GitLab 会解析该文件并将结果显示到 merge request 页面,用户可以直观看到结果。

参考资料

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年04月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
看了您的文章 php可以正常运行 但是现在java不能执行 根据命令执行完成后访问结果.html就显示No issues have been found! 请教一下,如果想用codeclimate 测试java 代码需要配置其他的内容吗
看了您的文章 php可以正常运行 但是现在java不能执行 根据命令执行完成后访问结果.html就显示No issues have been found! 请教一下,如果想用codeclimate 测试java 代码需要配置其他的内容吗
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
🚀 基于CI/CD的代码审查自动化实践:高效、智能的代码质量提升指南
如果你曾参与过团队开发,你一定知道代码审查有多重要,也可能深深感受到它有多“痛苦”。一边是上线的时间紧迫,一边是对代码质量的严格要求,大家常常手忙脚乱。
bug菌
2025/01/22
1920
🚀 基于CI/CD的代码审查自动化实践:高效、智能的代码质量提升指南
干货 | 提前在开发阶段暴露代码问题,携程Alchemy代码质量平台
Lyan,携程资深后端开发工程师,负责自动化测试框架及平台类工具开发,关注Devops、研发效能领域。
携程技术
2022/12/14
1.8K1
干货 | 提前在开发阶段暴露代码问题,携程Alchemy代码质量平台
程序员的实用神器分享
在软件开发的海洋中,程序员的实用神器如同航海中的指南针,帮助他们导航、加速开发、优化代码质量,并最终抵达成功的彼岸。这些工具覆盖了从代码编写、版本控制到测试和部署的各个环节。
正在走向自律
2024/12/18
1070
程序员的实用神器分享
保证代码质量的工具与方法——细节决定成败
大家好,我是Echo_Wish,今天我们要聊的是一个在开发过程中至关重要的话题:代码质量。高质量的代码不仅能使开发过程更加顺利,减少Bug和故障,还能提高团队的工作效率和产品的维护性。那么,如何保证代码质量呢?下面我将详细介绍几种工具和方法,希望对你有所帮助。
Echo_Wish
2025/03/07
1270
保证代码质量的工具与方法——细节决定成败
五款提升代码质量的IDEA插件,赶紧选择适合你的装上吧!
来源:blog.csdn.net/a745233700/article/details/126202100 随着业务的发展,系统会越来越庞大,原本简单稳定的功能,可能在不断迭代后复杂度上升,潜在的风险也随之暴露,导致最终服务不稳定,造成业务价值的损失。而为了减少这种情况,其中一种比较好的方式就是提高代码质量,比如通过代码审查,从而降低错误风险,但是,代码审查难度大,代码缺陷、漏洞不易发现,且审查工作随着代码量增加而增加,审查效率低。 工欲善其事,必先利其器,因此,这篇文章给大家介绍几种检查代码质量的利器,A
程序猿DD
2023/04/04
1.1K0
五款提升代码质量的IDEA插件,赶紧选择适合你的装上吧!
『Jenkins』使用Jenkins实现自动化的代码质量检查
在现代软件开发过程中,确保代码质量是非常重要的一项任务。代码质量直接影响到应用的稳定性、性能以及开发效率。自动化代码质量检查能够帮助团队在开发周期的早期发现问题,从而减少后期维护成本和Bug的发生。为了实现这一目标,持续集成(CI)工具如Jenkins被广泛应用。
数字扫地僧
2024/12/27
1660
SonarQube:为你的PHP代码质量保驾护航
SonarQube是一个开源的代码质量管理平台,用于检测代码中的错误、漏洞和代码规范。它可以与多种工具集成,如Gitlab、Jenkins等,以便在项目拉取后进行连续的代码检查。SonarQube旨在提供一个完整的代码质量管理解决方案,支持多种计算机编程语言,并内置大量常用代码检查规则。
Tinywan
2024/01/10
5760
SonarQube:为你的PHP代码质量保驾护航
运维自动化基础建设|代码质量平台
当前市面上开源的支持语言种类比较多的代码质量管控平台并不多,选择sonarqube的原因另外一个层面大家也可以看到,码云上面的代码分析也是基于sonarqube的(估计是在此基础上进行了二开),如下图所示:
追马
2020/07/02
8430
【DevOps实践】5. Jenkins流水线集成SonarQube做代码质量分析
本文讲解使用SonarQube和SonarQube Scanner如何配合做代码检查配置,并完成所有部署实践。
辉哥
2021/03/22
7.3K0
有了这 5 个 IDEA 插件,代码质量还不杠杠的!拿捏!
随着业务的发展,系统会越来越庞大,原本简单稳定的功能,可能在不断迭代后复杂度上升,潜在的风险也随之暴露,导致最终服务不稳定,造成业务价值的损失。而为了减少这种情况,其中一种比较好的方式就是提高代码质量,比如通过代码审查,从而降低错误风险,但是,代码审查难度大,代码缺陷、漏洞不易发现,且审查工作随着代码量增加而增加,审查效率低。
Java团长
2022/12/20
5.3K0
有了这 5 个 IDEA 插件,代码质量还不杠杠的!拿捏!
Golang 项目集成 SonarQube 做代码质量分析
seth-shi
2024/08/02
3350
Golang 项目集成 SonarQube 做代码质量分析
代码质量管理 SonarQube 系列之 安装
SonarQube 仅支持 JVM 11,SonarQube scanners 支持 JVM 8 或 11。
叨叨软件测试
2020/04/14
9900
代码质量管理 SonarQube 系列之 安装
SonarQube 代码质量检查工具配置
最近负责公司一部分项目的代码仓库管理及 code review 等,用到了 SonarQube 这一代码质量检查工具,通过集成 GitLab CI,能够实现在每次合并请求/提交时自动执行代码质量检查并输出检测报告。
pseudoyu
2023/04/11
1.3K0
SonarQube 代码质量检查工具配置
Gitlab CI 持续集成的完整实践
借着公司代码库迁移到私有Gitlab的契机,我接下持续集成的工作,实现了对Python服务端代码的单元测试、静态代码分析和接口测试的持续集成。总体架构如下:
DevOps时代
2019/10/06
1.9K0
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台
现如今大家越来越认识到质量前移的重要性。如果一开始就写出优质的、经过测试的代码,那么后面的测试阶段将会减少很多不必要的时间。如果开发人员迫于业务压力,一味追求项目开发进度,往往会容易形成大量的“烂代码”。 一般的烂代码体现在逻辑混乱、复杂度高、易读性差、没有单元测试和缺乏必要的注释。如果把这样的“烂代码”编译交付测试团队,那么测试人员势必会发现很多低级缺陷,甚至连冒烟测试都无法通过,这样势必会浪费很多时间,延误测试进度。 所以,回到开始,为何不一开始就是写出优质代码呢?
高楼Zee
2019/07/17
4.8K0
Jenkins+SonarQube+Gitlab搭建自动化持续代码扫描质量平台
自动化集成:Docker容器入门简介
Docker作为开源的应用容器引擎,可以把应用程序和其相关依赖打包生成一个Image镜像文件,是一个标准的运行环境,提供可持续交付的能力,通过镜像文件可以创建多个Docker容器,这里可以理解为类创建对象的原理;镜像文件可以推送到仓库Repository中,这里可以理解为Git仓库管理代码的原理。
知了一笑
2021/12/30
4230
自动化集成:Docker容器入门简介
sonarQube + gitlab-runner 实现代码规范自动化检测
使用sonarQube + gitlab-runner实现代码提交到gitlab仓储,触发gitlab-ci,通过gitlab-runner执行带有sonarQube代码审核执行脚本的gitlab-ci.yml文件,完成整个代码自动化规范检查操作。
夹胡碰
2020/10/29
3.2K0
sonarQube + gitlab-runner 实现代码规范自动化检测
如何将你的Python项目全面自动化?
每个项目——无论你是在从事 Web 应用程序、数据科学还是 AI 开发——都可以从配置良好的 CI/CD、Docker 镜像或一些额外的代码质量工具(如 CodeClimate 或 SonarCloud)中获益。所有这些都是本文要讨论的内容,我们将看看如何将它们添加到 Python 项目中!
代码医生工作室
2020/10/23
9470
如何将你的Python项目全面自动化?
对代码质量进行检查
今天习得了一个不错的项目代码质量检测工具,并且在自己的 IDE 上进行安装,这一实践不要紧,感觉还是很不错的。后来查了文档,这个工具不仅可以在 IDE 上来使用,在项目的持续集成部署上面,依然有用武之地,可以提高项目的代码质量。也就是说在你项目根目录下的 gitlab-ci.yml 文件中把它作为一个持续集成部署中的一个 pipeline,就可以对你上线代码的质量进行把控。这个工具的名字就是 SonarQube,同时针对 JetBrains 也有一款起相同作用的工具 Qodana。
用户1413827
2023/11/28
4070
对代码质量进行检查
基于GitLab实现端到端DevOps流水线实践
创建issue --> 创建特性分支 --> 特性分支提交流水线 --> 合并分支流水线 --> 发布分支流水线
DevOps云学堂
2020/05/27
1.4K0
推荐阅读
相关推荐
🚀 基于CI/CD的代码审查自动化实践:高效、智能的代码质量提升指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验