2

问题

如果源代码包含关键字/正则表达式,如何使 Maven 构建失败?

奖金

  • 能够指定要检查的路径
  • 能够指定要检查的“种类”路径:
    • “我想确保 KEYWORD 不包含在‘主要’资源中。我不关心‘测试’”
    • “我想确保 KEYWORD 不包含在 'test' 资源中。我不关心 'main'”
    • ...
  • 能够指定在哪个阶段执行测试(例如在编译之前)

解决方案

(基于当前答案 2013-09-26)

最好的解决方案似乎是@BaptisteMathus答案,它与 maven 完全集成并且独立于平台。

在我的用例中,@GregWhitaker的答案是一个很好的答案,因为它实现起来更便宜,因为我不关心平台独立性(<= 所需的命令在我的所有主机上都可用)。下面的代码示例是基于此答案的解决方案,它禁止使用“FIXME”或“自动生成的方法存根”,但假设这egrep是可用的。

另请参阅“启用声纳”项目中更简洁的@MarkOConnor答案

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2.1</version>
            <executions>
                <execution>
                    <phase>process-sources</phase>
                    <configuration>
                        <executable>egrep</executable>
                        <successCodes>
                            <successCode>1</successCode>
                        </successCodes>
                        <arguments>
                            <argument>-rqm</argument>
                            <argument>1</argument>
                            <!-- Forbidden Keywords -->
                            <argument>FIXME|Auto-generated method stub</argument>
                            <!-- search path -->
                            <argument>src/main</argument>
                        </arguments>
                    </configuration>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
4

4 回答 4

2

去 SonarQube 做这件事并不是一个坏主意。

无论如何,如果有人想使用仅限 maven 的解决方案,那么正确的方法是使用专用于使用 maven 构建“强制”事物的插件。使用 exec-maven-plugin 不是那么标准,而且肯定过多地依赖于平台。

这个插件在逻辑上被命名为maven-enforcer-plugin并且编写一个自定义的执行器规则实际上非常简单。

于 2013-09-25T12:19:39.377 回答
1

我认为taglist-maven-plugin正是你想要的。

于 2013-08-08T15:13:41.427 回答
1

Sonar 有一个taglist插件,它允许您在评论块中搜索字符串并指定严重性处理。我假设这就是您要查找的内容...解析源代码本身可能需要针对 checkstyle 之类的工具的自定义规则,我没有尝试过这种方法,但它已记录在 Sonar 站点上

这可以与构建破坏插件结合使用,当您的项目的质量配置文件中违反警报标准时,该插件会使您的构建失败。

于 2013-08-08T19:14:48.097 回答
1

我会创建一个小程序来运行这些检查,然后通过exec-maven-plugin执行它。如果您在主要资源中找到关键字,则只需返回一个非零返回码,这将导致插件无法构建。

于 2013-08-08T15:06:27.463 回答