精华内容
下载资源
问答
  • Maven集成CheckStyle

    2021-01-21 22:45:53
    最近在项目组里开发项目的时候,经常遇到项目里面代码格式统一,merge 的时候经常冲突一大片,在网上搜索,查到了 Maven 可以集成 checkstyle 进行代码格式化审查。现将我的经验做以分享。 配置CheckStyle插件 在...

    最近在项目组里开发项目的时候,经常遇到项目里面代码格式不统一,merge 的时候经常冲突一大片,在网上搜索,查到了 Maven 可以集成 checkstyle 进行代码格式化审查。现将我的经验做以分享。

    配置CheckStyle插件

    在项目根目录新建一个 config 文件夹,将代码规约配置文件放到此路径下,当然你也可以根据自己的需求去自行定义

    image-20210121212720371

    常见的语法配置如下:

    http://checkstyle.sourceforge.net/config.html

    我这里用的是 sun 公司的代码规约,配置文件地址如下:

    https://github.com/checkstyle/checkstyle/tree/master/src/main/resources

    在 Maven 中一个名为 maven-checkstyle-plugin 的插件,用于执行 CheckStyle task。下面是一个简单的配置。在 Maven 工程中的 pom.xml 文件,添加内容如下:

    <plugin>
    	<groupId>org.apache.maven.plugins</groupId>
    	<artifactId>maven-checkstyle-plugin</artifactId>
    	<version>3.1.1</version>
    	<configuration>
    		<configLocation>config/checkstyle.xml</configLocation>
    	</configuration>
    	<executions>
    		<execution>
    			<id>checkstyle</id>
    			<phase>validate</phase>
    			<goals>
    				<goal>check</goal>
    			</goals>
    			<configuration>
    				<failOnViolation>true</failOnViolation>
    			</configuration>
    		</execution>
    	</executions>
    </plugin>
    

    image-20210121213350515

    我们定义了在 Maven Lifecycle 的 validate 阶段执行 check task,并且如果发现有违反标准的情况就会 fail 当前的 build。

    maven-checkstyle-plugin 内置了4种规范

    • config/sun_checks.xml
    • config/maven_checks.xml
    • config/turbine_checks.xml
    • config/avalon_checks.xml

    其中 sun_checks.xml 为默认值。如果想要使用其他三种规范,则只需配置 configuration。

    修改 pom 之后,就可运行 CheckStyle 检查,检查的报告文件在 target\checkstyle-result.xml 中

    运行CheckStyle检查

    mvn checkstyle:check
    

    运行失败截图:

    image-20210121213819783

    image-20210121213843313

    运行成功截图:

    image-20210121214349533

    初始化 git hooks

    这一步主要是为了在 commit 代码之前,跑 Check Style,保证代码格式没问题,如果有问题的话就不能提交。

    在刚刚建好的 config 文件夹再建一个 git-hooks 文件夹,将 pre-commit 文件放到此路径下,pre-commit 文件内容如下:

    #!/bin/sh
    #set -x
    
    echo "begin to execute hook"gst
    mvn checkstyle:check
    
    RESULT=$?
    
    exit $RESULT
    

    image-20210121222030708

    然后在项目的根目录下新建一个 init.sh 文件,init.sh 文件内容如下:

    cp config/git-hooks/pre-commit .git/hooks/
    chmod +x .git/hooks/pre-commit
    

    image-20210121222152434

    以下演示的是 Mac/Linux 对应的操作,Window 用户需要手动将 config/git-hooks 目录下的pre-commit 文件拷贝到 项目下的 .git/hooks/ 目录。

    chmod +x ./init.sh
    ./init.sh
    

    init.sh 这个脚本的主要作用是将 git commit 钩子拷贝到项目下的 .git/hooks/ 目录,这样你每次 commit 的时候就会执行了。

    如果代码格式有问题,提交的时候就会报错,如下图:

    image-20210121222237096

    代码地址:https://github.com/cxhello/springboot-admin

    参考文章

    https://github.com/checkstyle/checkstyle

    https://github.com/Snailclimb/guide-rpc-framework

    https://blog.csdn.net/frank823/article/details/80787142

    展开全文
  • 这样,您可以确保您不会浪费时间在Apache Maven范围之外的东西上。 假设您的问题存在,请提交该问题的票证。 清楚地描述问题,包括在出现错误时重现的步骤。 确保填写您知道存在问题的最早版本。 在GitHub上...
  • maven 忽略checkstyle

    千次阅读 2015-11-10 10:48:14
    备忘,需要忽略掉checkstyle时:   mvn eclipse:eclipse -Dcheckstyle.skip=true   经常在打包时点了skip test来运行,但这样再去运行测试用例的话,会提示没有编译,应该改成 -DskipTests   区别: -...

    备忘,需要忽略掉checkstyle时:

     

    mvn eclipse:eclipse -Dcheckstyle.skip=true

     

    经常在打包时点了skip test来运行,但这样再去运行测试用例的话,会提示没有编译,应该改成

    -DskipTests

     

    区别:

    -DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。

    -Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。

    展开全文
  • 下这边文件主要是目前国内的大部分都是用的Google和sun的代码检测,...说起来真的很严格,你如果代码规范你连包都打起,因为插件配到了maven的生命周期里面的。 好的开始搞 首先根目录下面建一个如上图所示...

    下这边文件主要是目前国内的大部分都是用的Google和sun的代码检测,如果你想装逼用自己的规则那就看看吧。

    首先采用的是boot,为了规范 组内成员的代码风格和质量,特此用checkstyle来检测。

    为什么用maven的checkstyle插件呢?说起来真的很严格,你如果代码不规范你连包都打不起,因为插件配到了maven的生命周期里面的。

    好的开始搞

    首先根目录下面建一个如上图所示的文件结构。checkstyle.xml就是我们的自定义代码规范约束文件了,suppressions.xml是干嘛的呢?

    当某种情况可能你的一个类不得不导一个这样的包。比如:java.util.*(如果该包下面的所有类你都用上了,就是自动给你转换成.*),然而这种用.*的导包方式是被我们的代码规范所约束了的,所以会报错,所以suppressions.xml的作用就是剔除这种特殊的文件,让checkstyle插件不去检测。

     

    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <version>${checkstyle.version}</version>
        <configuration>
            <!-- Here is the custom specification file address, and the confing directory is parallel to the Pom.xml -->
         //checkstyle自定义文件位置
         <configLocation>config/checkStyle/checkstyle.xml</configLocation>
        //不需要检测的类的文件的位置
            <suppressionsLocation>config/checkStyle/suppressions.xml</suppressionsLocation>
        //检测结果是否在控制台输出
            <consoleOutput>true</consoleOutput>
            <detail>false</detail>
        </configuration>
    //好像是执行的时候必须检测(不配置无法check代码)
    <executions>
        <execution>
            <id>checkstyle</id>
            <phase>validate</phase>
            <goals>
                <goal>check</goal>
            </goals>
            <configuration>
                <failOnViolation>true</failOnViolation>
                <failsOnError>true</failsOnError>
            </configuration>
        </execution>
    </executions>
    </plugin>

    把上述插件直接放在maven的生命周期里面,install就可以检测了,代码不规范无法打包项目哦

    也可以单个检测文件,如图

     

    需要的自己去网上找资料吧很简单。(checkstyle和suppressions的配置我贴在下一篇文章)

     

    展开全文
  • maven-checkstyle-plugin artifactId > < version > 2.17 version > < executions > < execution > < id > validate id > < phase > validate phase > < configuration > < excludes > src...

    RocketMQ 编译Console时遇到的坑

    明确1:spring-boot-starter-parent的版本2.1.3.RELEASE
    明确2:项目开发中使用的RocketMQ版本,这里,我使用4.4.0,记着
    是Apache项目,不是阿里的包
    第一步:
    打开github上下载的rocketmq-externals-master,进入到rocketmq-externals-master\rocketmq-console下面,打开如下路径rocketmq-externals-master\rocketmq-console\src\main\resources,修改为如下配置

    server.contextPath=/rocketmq
    server.port=8080
    #spring.application.index=true
    spring.application.name=rocketmq-console
    spring.http.encoding.charset=UTF-8
    spring.http.encoding.enabled=true
    spring.http.encoding.force=true
    logging.config=classpath:logback.xml
    #if this value is empty,use env value rocketmq.config.namesrvAddr  NAMESRV_ADDR | now, you can set it in ops page.default localhost:9876
    rocketmq.config.namesrvAddr=127.0.0.1:9876
    #if you use rocketmq version < 3.5.8, rocketmq.config.isVIPChannel should be false.default true
    rocketmq.config.isVIPChannel=
    #rocketmq-console's data path:dashboard/monitor
    rocketmq.config.dataPath=/tmp/rocketmq-console/data
    #set it false if you don't want use dashboard.default true
    rocketmq.config.enableDashBoardCollect=true
    #set the message track trace topic if you don't want use the default one
    rocketmq.config.msgTrackTopicName=
    

    第二步:修改pom.xml,更改spring-boot-starter-parent的版本和rocketmq版本,并且删掉如下plugins

    <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>2.17</version>
                    <executions>
                        <execution>
                            <id>validate</id>
                            <phase>validate</phase>
                            <configuration>
                                <excludes>src/main/resources</excludes>
                                <configLocation>style/rmq_checkstyle.xml</configLocation>
                                <encoding>UTF-8</encoding>
                                <consoleOutput>true</consoleOutput>
                                <failsOnError>true</failsOnError>
                            </configuration>
                            <goals>
                                <goal>check</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
    

    修改完代码如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.3.RELEASE</version>
        </parent>
        <groupId>org.apache</groupId>
        <artifactId>rocketmq-console-ng</artifactId>
        <packaging>jar</packaging>
        <version>1.0.0</version>
        <name>rocketmq-console-ng</name>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <java.version>1.7</java.version>
            <guava.version>16.0.1</guava.version>
            <commons-digester.version>2.1</commons-digester.version>
            <commons-lang.version>2.6</commons-lang.version>
            <commons-io.version>2.4</commons-io.version>
            <commons-cli.version>1.2</commons-cli.version>
            <rocketmq.version>4.4.0-SNAPSHOT</rocketmq.version>
            <surefire.version>2.19.1</surefire.version>
            <aspectj.version>1.6.11</aspectj.version>
            <main.basedir>${basedir}/../..</main.basedir>
            <docker.image.prefix>styletang</docker.image.prefix>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>commons-collections</groupId>
                <artifactId>commons-collections</artifactId>
                <version>3.2.2</version>
            </dependency>
            <dependency>
                <groupId>org.apache.rocketmq</groupId>
                <artifactId>rocketmq-tools</artifactId>
                <version>4.4.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.rocketmq</groupId>
                <artifactId>rocketmq-namesrv</artifactId>
                <version>4.4.0</version>
            </dependency>
            <dependency>
                <groupId>org.apache.rocketmq</groupId>
                <artifactId>rocketmq-broker</artifactId>
                <version>4.4.0</version>
            </dependency>
            <dependency>
                <groupId>com.google.guava</groupId>
                <artifactId>guava</artifactId>
                <version>${guava.version}</version>
            </dependency>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjrt</artifactId>
                <version>${aspectj.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>${aspectj.version}</version>
            </dependency>
            <!-- Spring AOP + AspectJ -->
            <dependency>
                <groupId>cglib</groupId>
                <artifactId>cglib</artifactId>
                <version>2.2.2</version>
            </dependency>
            <dependency>
                <groupId>org.jooq</groupId>
                <artifactId>joor</artifactId>
                <version>0.9.6</version>
            </dependency>
    
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version>0.4.11</version>
                    <configuration>
                        <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                        <dockerDirectory>src/main/docker</dockerDirectory>
                        <resources>
                            <resource>
                                <targetPath>/</targetPath>
                                <directory>${project.build.directory}</directory>
                                <include>${project.build.finalName}.jar</include>
                            </resource>
                        </resources>
                        <imageTags>
                            <imageTag>${project.version}</imageTag>
                            <imageTag>latest</imageTag>
                        </imageTags>
                    </configuration>
                </plugin>
              
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${surefire.version}</version>
                    <configuration>
                        <excludes>
                            <exclude>src/test/**</exclude>
                        </excludes>
                        <forkCount>1</forkCount>
                        <reuseForks>true</reuseForks>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>2.19.1</version>
                    <configuration>
                        <forkCount>1</forkCount>
                        <reuseForks>true</reuseForks>
                        <argLine>@{failsafeArgLine}</argLine>
                        <includes>
                            <include>src/test/**</include>
                        </includes>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>integration-test</goal>
                                <goal>verify</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <artifactId>maven-source-plugin</artifactId>
                    <version>3.0.1</version>
                    <executions>
                        <execution>
                            <id>attach-sources</id>
                            <goals>
                                <goal>jar</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                
                <plugin>
                    <groupId>org.jacoco</groupId>
                    <artifactId>jacoco-maven-plugin</artifactId>
                    <version>0.7.9</version>
                    <executions>
                        <execution>
                            <id>default-prepare-agent</id>
                            <goals>
                                <goal>prepare-agent</goal>
                            </goals>
                            <configuration>
                                <destFile>${project.build.directory}/jacoco.exec</destFile>
                            </configuration>
                        </execution>
                        <execution>
                            <id>default-prepare-agent-integration</id>
                            <phase>pre-integration-test</phase>
                            <goals>
                                <goal>prepare-agent-integration</goal>
                            </goals>
                            <configuration>
                                <destFile>${project.build.directory}/jacoco-it.exec</destFile>
                                <propertyName>failsafeArgLine</propertyName>
                            </configuration>
                        </execution>
                        <execution>
                            <id>default-report</id>
                            <goals>
                                <goal>report</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>default-report-integration</id>
                            <goals>
                                <goal>report-integration</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>default-check</id>
                            <goals>
                                <goal>check</goal>
                            </goals>
                            <configuration>
                                <rules>
                                    <!-- implementation is needed only for Maven 2 -->
                                    <rule implementation="org.jacoco.maven.RuleConfiguration">
                                        <element>BUNDLE</element>
                                        <limits>
                                            <!-- implementation is needed only for Maven 2 -->
                                            <limit implementation="org.jacoco.report.check.Limit">
                                                <counter>COMPLEXITY</counter>
                                                <value>COVEREDRATIO</value>
                                                <minimum>0.20</minimum>
                                            </limit>
                                        </limits>
                                    </rule>
                                </rules>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                    <groupId>org.eluder.coveralls</groupId>
                    <artifactId>coveralls-maven-plugin</artifactId>
                    <version>4.3.0</version>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>findbugs-maven-plugin</artifactId>
                    <version>3.0.4</version>
                </plugin>
    
                
            </plugins>
        </build>
    
    </project>
    

    第三步:maven编译
    mvn clean package -Dmaven.test.skip=true
    这时候,再target下面已经编译好jar包了,使用命令运行即可

    这个问题折磨了一下午

    展开全文
  • maven插件之checkstyle

    2018-08-31 20:42:00
    但是能保证开发者能按照checkstyle进行改正或者自查,因此就需要对未checkstyle通过的代码能编译通过。 下来就是mavencheckstyle插件在lifecycle中增加一个checkstyle阶段在complies之前,对代码 goal 进行...
  • Maven Checkstyle Plugin使用

    万次阅读 2018-06-07 14:41:57
    为了在提交代码之前做一些必要的代码检查,我们需要使用一些工具来辅助我们的工作——对于maven工程我们可以使用maven checkstyle plugin。这里以 eclipse 为例介绍怎么使用 maven checkstyle plugin。 接下来会以...
  • maven 打包忽略checkstyle

    2020-12-01 22:03:17
    maven 命令 mvn clean package -Dcheckstyle.skip=true 经常在打包时点了skip test来运行,但这样再去运行测试用例的话,会提示没有编译,应该改成 -DskipTests 区别: -DskipTests,执行测试用例,但编译测试用例...
  • 今天开发的时候发现了一个好用的plugin:maven-checkstyle-plugin,可以帮助程序员检测代码中符合规范的地方,大大方便程序开发。1. maven自定义checkstyle使用1.1. 自定义checkstyle.xml即自己定义代码的规格。...
  • maven checkstyle NewlineAtEndOfFile 的处理

    千次阅读 2015-01-26 13:27:30
    环境: mvn3.x + jdk1.7 + git 1.9 + checkstyle6.2 错误:checkstyle 检查编码规范失败,原因: ...但今天遇到个兄弟,加上换行,还是依然报错,协助排查,结果发现是 换行符统一 的问题。 小结如下:
  • [INFO] --- maven-checkstyle-plugin:2.17:check (validate) @ junit4_in_chinese --- [INFO] ▒?始检查▒?▒▒?? ▒?查完成▒?? 目测是编码转了两次的结果,java在我的系统里应该默认用GBK来编码字符的&...
  • 研究过后准备使用maven-checkstyle-plugin插件来进行开发。参考了官方的说明,但是说的不是很明白,故在此以自己的角度进行整理总结。 官方参考文档如下:PS:本文档只描述在工程pom文档里进行install时的配置开发...
  • 有时候我们用Maven运行 CheckStyle 的结果和用Eclipse CheckStyle UI 跑出来的结果一样, 这个时候我们就要修改 Eclipse CheckStyle UI的配置:
  • 最近工作做中需要利用maven在编译打包...研究过后准备使用maven-checkstyle-plugin插件来进行开发。参考了官方的说明,但是说的不是很明白,故在此以自己的角度进行整理总结。 官方参考文档如下: 自定义开发checks...
  • 1.maven配置jacoco、checkstyle、findbugs、pmd 这几个工具的用途: checkstyle:检测代码规范 findbugs:检测代码明显的语法错误,比如使用“==”比较字符串 pmd:扫描潜在问题,如未用过的局部变量,未用过...
  •  checkstyle:检测代码的格式规范。例如:方法没有写注释,类的命名规范,括号的位置……  jacoco:检测代码覆盖率。例如:类中有10个方法,对应的测试类中只测试了8个方法,这里的方法覆盖率就是80%……  ...
  • 使用此Maven POM使用JUnit,JaCoCo,Hamcrest,FindBugs,PMD,CodeNarc,Checkstyle(Google),Enforcer,Duplicate-Finder,JDepend等来增强和报告代码质量。 目录 1.概述 通过以下方式增强和报告代码质量: ...
  • 我正在生成嵌入maven站点的Checkstyle报告,并且其中一个问题是它指出允许捕获异常.我该如何解决这个问题?我只是想简单地删除代码,如果我没有其他替代方案来解决这个问题.public void contextInitialized...
  • 我正在生成嵌入在Maven网站中的Checkstyle报告,对于其中一个问题,它指出了Catching exception is not allowed。如何解决此问题?我只是只是想删除代码,如果我想要除去此问题的其他替代方法。public void ...
  • 包括Checkstyle在Eclipse中和Maven中的配置详解,下了绝后悔,一文在手,开发
  • 需求背景最近在项目开发中,经常遇到库上的代码编不过的场景。有些员工上传代码之前并去编译,导致测试环境可用。...安装checkstyle插件maven中集成checkstyleMaven CheckStyle插件提供两种预先定义的规则:sun...
  • maven跳过插件

    万次阅读 2015-10-14 13:58:04
    最近用到maven,各种测试,checkstyle的插件都很全,所以编译起来就比较慢,一旦这些影响编译大局的插件执行失败还影响调试的进度。所以就想如何来跳过这些插件的执行。 规则:每个插件都有一个属性,maven的时候...
  • 在本系列 八月份 的那期文章中,我得出了这样的结论:将检验工具集成到构建过程(例如,使用 Ant 或 Maven)中,能够建立起一种寻找潜在缺陷的方法。尽管这种方法使一致性成为可能并超越了 IDE,但它也有一点反作用...
  • 简介:CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发...废话多说直接上代码(springboot需要的maven依赖本文作展示,不会的同学自己百度) 1.添加所需要的maven插件 <plugins> <pl...
  • pair 第一周——邪恶的checkstyle

    千次阅读 2010-07-02 22:15:00
    ci那边的同事也把checkstyle(代码静态分析检查工具)和maven整合了,于是跑了第一个maven的test。我靠!checkstyle的默认规则太变态了一行代码能超过80个字符的位置(一个tab占据4个字符的位置)static关键字的...
  • maven chekstyle 缩进调整

    2020-08-22 16:27:09
    默认情况下Google的checkstyle 代码缩进为4个空格字符,和Intelij ideal的默认控制符匹配,如需调整,可修改checksytle.xml的文件内容为如下: <module name="Indentation"> <property name="severity" ...

空空如也

空空如也

1 2 3 4
收藏数 66
精华内容 26
关键字:

maven不checkstyle