小编rob*_*ert的帖子

使用Jacoco时,Coverage视图在Intellij中显示0.0%

正如在Intellij IDEA的Open JaCoCo报告中所讨论的,当我使用Jacoco(而不是本机IntelliJ跟踪)收集代码覆盖率统计时,0.0%(即"无"覆盖率)始终显示在覆盖窗口中.

这是在我完成整个"分析 - >显示覆盖数据..."并选择了我生成的"jacoco.exec"文件之后.

相同的"jacoco.exec"文件可以与其他工具(如Jacoco本机报告生成任务)和Sonar一起使用,这些工​​具可以生成预期的覆盖率报告内容.

原生IntelliJ仪器也可以正常工作.

任何人都可以告诉我,为了让IntelliJ接受我的Jacoco报道,我必须采取哪些必要步骤吗?

java code-coverage intellij-idea jacoco

34
推荐指数
1
解决办法
5583
查看次数

在java代码库中自动为所有if/else/for/while等添加花括号

我希望减少大型遗留Java代码库中声纳违规的数量,似乎"快速获胜"将更新所有这些条件语句以具有大括号.这似乎是一件容易的事情,我不明白为什么它不容易自动化.

有没有人知道可以像这样执行批量操作的工具?或者为什么做这样的事情可能是一个坏主意,然后我花时间自己写点什么?如果我自己写一个什么是最好的工具?理想情况下是Java语言识别的东西,所以我不必处理格式化角落等情况.

顺便说一句,规则是不可协商的,所以这确实是最好的方法.

java formatting sonarqube

9
推荐指数
3
解决办法
7526
查看次数

在build.xml中设置ANT CLASSPATH

这个特殊问题已被问过几次,但并不令我满意.我对提出的解决方法并不感兴趣,但是如何做我真正想做的事情.

想要一个令人满意的解释为什么这是不可能的,如果不是,并且因为我建议自己提交一个解决方案,我想了解为什么没有尝试过看起来那么简单的东西.

目前,为了确保ant可以使用一组jar,必须采用以下方法之一:

  • 添加到CLASSPATH环境变量 - 文档中的"不推荐"
  • 添加到$ANT_HOME/lib~/.ant/lib- 需要在构建环境中进行配置
  • -libant调用时设置参数

最后一个选项是我已经确定的首选选项,但它仍然需要调用构建的人进行一些干预(我已经ant在我的开发存储库中的包装器脚本中捕获了它).

特别是我试图调用Schematron Ant任务,该任务应根据以下文档设置:

<taskdef name="schematron" 
 classname="com.schematron.ant.SchematronTask"
 classpath="lib/ant-schematron.jar"/>
Run Code Online (Sandbox Code Playgroud)

但是这对撒克逊人有一个传递依赖,所以如果没有saxon.jar可用的CLASSPATH,那么构建失败:

java.lang.NoClassDefFoundError: net/sf/saxon/TransformerFactoryImpl
Run Code Online (Sandbox Code Playgroud)

蚁文件本身继续提出,它应该是需要这些额外的本身的taskdef CLASSPATH条目,但我已经与Schematron的蚂蚁任务无济于事尝试这个.

关键问题是它是否应该是支持这个的schematron ant任务,或者ant build.xml是否可以在其自身内配置其全局类路径?

似乎这是人们想要经常做的事情,并且由于ant文档本身建议使用CLASSPATH本身,我很惊讶build.xml本身没有其他选择!

java ant schematron

5
推荐指数
1
解决办法
4870
查看次数

“已连接”UDP 套接字接收 ICMP 端口不可达

基于 UDP 是无连接协议的前提,我假设主机是启动还是关闭是无关紧要的。

但是,现在我正在做测试,我发现当我“连接”我的 UDP 客户端套接字时,write该套接字返回一个错误,因为服务器发回了一个 ICMP 端口无法访问错误..

“连接” UDP 端口的目的(根据 Stevens Unix Network Programming)基本上是缓存路由表中的条目,而不是为每个数据包创建一个新的条目,这应该具有性能优势。

但是,这个 ICMP 数据包导致我丢失了客户端套接字,这很烦人。

任何人都可以解释为什么会这样吗?是否有任何已知的解决方法?

我正在使用一个 3p java 库,它没有考虑到这一点,只是断开连接,我可能不得不破解它以重新连接,但在我这样做之前,我有点希望我可以在(Linux)上做一些事情操作系统级别可能是为了防止这种情况发生……对套接字选项等的所有调查都证明是徒劳的。

编辑

总之,这是不可能的,修复代码是唯一的方法。

唯一的可能性似乎是配置 iptables 来阻止 ICMP 响应,但要破解这个特定的坚果有点大锤。

java sockets linux udp icmp

3
推荐指数
1
解决办法
4132
查看次数