gpt4 book ai didi

ant - Findbugs ant 任务提交几个动态检测到的 JAR 文件进行分析

转载 作者:行者123 更新时间:2023-12-02 04:05:16 25 4
gpt4 key购买 nike

我目前正在寻找对预先存在的项目进行静态分析。由于该项目是由一家异地公司创建和提供的,因此我无法从根本上改变构建过程。

该项目分为许多子模块,分布在各个地方。对于其他分析工具(JDepend、Google Testability Explorer 等),我已将所有构建 JAR 文件动态检测到 path元素如下:

<path id="built-libs">
<fileset dir="${overall-base}">
<include name="${some-common-base}/**/lib/*.jar" />
</fileset>
</path>
<property name="built-libs-string" refid="built-libs" />

对于某些工具,我使用 build-libs ,对于其他人,我使用字符串(以类路径形式; x.jar;y.jar )。

问题是,FindBugs 使用的格式与其他格式完全不同。
<class location="x.jar"/>
<class location="y.jar"/>
...

现在,我可以手动列出所有 JAR 文件,但随后会冒此列表与其他工具的列表不同步或引入拼写错误的风险。

另一个复杂之处是我还想在 Jenkins 中运行报告,在这种情况下,各个模块的提取目录将取决于先前构建模块的作业(管道构建,从 SCM 提取并并行构建的模块,报告发生在管道的末端)。

我可以调用操作系统来运行 FindBugs,在一个空格分隔的列表中传递 JAR(如 Invoking FindBugs from Ant: passing a space-separated list of files to java 中)。但是,我更喜欢 Ant 解决方案而不是操作系统 <exec...黑客。

注意我知道 sourcepath 有类似的问题。但是,我假设解决 class元问题也解决了 sourcepath一。

最佳答案

理想情况下,FindBugs 应该采用 resource collection而不是分开class元素。我对 FindBugs 不熟悉,所以我无法评论他们为什么选择 class。元素路由而不是资源集合,但是您对使用 exec 的评论意味着使用资源集合是一种有效的设计替代方案。

我会尝试滚动你自己的Ant macro , 其中 invokes FindBugs directly使用 java任务。这应该为您提供所需的控制,并避免 FindBugs Ant 任务引入的冗余。

另一种选择(这是一个丑陋的黑客)是使用 fileset编写一个带有 FindBugs 目标的迷你 ant 文件,然后使用 ant 调用它任务。不寒而栗

关于ant - Findbugs ant 任务提交几个动态检测到的 JAR 文件进行分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8038480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com