2011-06-15 50 views
5

我在尝试让checkstyle在Hudson/Jenkins中正常工作时遇到问题。获取Checkstyle自定义规则以在Hudson/Jenkins中工作

我创造了非常小的规则自定义的CheckStyle规则在它(只是为了看看它的工作原理),并将其放置在某些服务器: -

<?xml version="1.0"?> 
<!DOCTYPE module PUBLIC 
      "-//Puppy Crawl//DTD Check Configuration 1.3//EN" 
      "http://www.puppycrawl.com/dtds/configuration_1_3.dtd"> 

<module name="Checker"> 
    <module name="RegexpSingleline"> 
     <property name="format" value="\s+$" /> 
     <property name="minimum" value="0" /> 
     <property name="maximum" value="0" /> 
     <property name="message" value="Line has trailing spaces." /> 
    </module> 
</module> 

我有一个看起来像这样的父POM: -

<?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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>a.b</groupId> 
    <artifactId>c</artifactId> 
    <packaging>pom</packaging> 
    <version>1.0</version> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.3.2</version> 
       <configuration> 
        <source>1.5</source> 
        <target>1.5</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <reporting> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-checkstyle-plugin</artifactId> 
       <version>2.4</version> 
       <configuration> 
        <configLocation>http://server/checkstyle.xml</configLocation> 
       </configuration> 
      </plugin> 
     </plugins> 
    </reporting> 
</project> 

实际的项目将包括父POM,像这样: -

<?xml version="1.0" encoding="UTF-8"?> 
<project> 
    <parent> 
     <groupId>a.b</groupId> 
     <artifactId>c</artifactId> 
     <version>1.0</version> 
    </parent> 

    <modelVersion>4.0.0</modelVersion> 
    <groupId>some</groupId> 
    <artifactId>project</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0</version> 

    ... 
</project> 

当我execu来自Eclipse的te mvn clean site,它工作得很好。使用默认的config/sun_checks.xml而不是看到1000多个checkstyle错误,我只得到27个checkstyle错误。

当我在Jenkins运行它时,出于某种原因,它没有选择我自定义的checkstyle规则。我得到了Jenkins的1000多个checkstyle错误。我检查了“控制台输出”日志,我没有看到任何关于checkstyle的错误/警告。从詹金斯的执行行家命令是这样的: -

<===[HUDSON REMOTING CAPACITY]===>channel started 
Executing Maven: -B -f D:\hudson\jobs\test\workspace\pom.xml clean site 
[INFO] Scanning for projects... 
... 

我希望能够添加-e-X选项看到一个更强大的日志,但我不能找到将其插入到一个地方詹金斯。

如何让我的自定义检查式规则与哈德逊/詹金斯一起工作?

非常感谢。

回答

0

您可以在“目标和选项”字段中添加-e-X开关。

您是否从外部位置引用checkstyle?如果是这样,也许你可以尝试添加checkstyle到你的VCS中的项目(当它工作时,它可能是一个网络问题)。将checkstyle.xml添加到您的VCS中也有好处,您拥有可重复的构建(以及VCS必须提供的其他利益)。

0

我设置的Maven如何找到我的checkstyle.xml configLocation不同

也许这会得到詹金斯工作。

此外,如果您创建一个标准的工作,而不是一个行家的工作对詹金斯你仍然可以执行的Maven目标,你可以简单地添加参数

<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"> 

    ... 

    <properties> 
    <checkstyle.config.location>http://server/checkstyle.xml</checkstyle.config.location> 
    </properties> 

    <build> 
    ... 

     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-checkstyle-plugin</artifactId> 
     <version>2.9.1</version> 
     </plugin> 
    </plugins> 
    </build> 

</project> 

写在这里:

http://blog.blundell-apps.com/create-your-own-checkstyle-check/

源代码在这里:

https://github.com/blundell/CreateYourOwnCheckStyleCheck