对于插桩引起的异常,我们是只有针对反射的时候才会抛出异常,方便详细问下你们这个【影响 1】是有用到 get/set 注解还是其他情况?
(1)可以直接解压部署的 war 包,得到 class 然后生成报告。但是由于没有源码,所有没有办法定位到哪一行没有测到。
(2)如果是直接通过 jenkins 打的包,可以直接去 jenkins 那台服务器上,取.java 和.class,就可以生成报告了。
sonar-maven-plugin 3.2 中的 sonar-scanner 的版本是更高的版本导致的。降到 2.3 版本就可以。
这几天针对 sonar 升级遇到了各种插件版本不匹配。
我是从 sonarqube 4.0 升级到 sonarqube 5.6 .其中原来有 7 个插件。checkstyle,pmd,findbugs,sonar-java ,squid,suriface,jacoco。
(1)升级到 sonarqube 5.6 后 ,squid,suriface,jacoco 这三个插件需要移除,因为已经整合到 sonar-java 中了。
(2)pmd 插件在 6.+ 上就移除了。所以一下子升级到最新版本的需要注意下。如果有原有规则通过 pmd 需要换,要么降低 sonarqube 的版本
(3)findbugs 在 4.0 版本的时候,不需要指定编译后的 classes 位置,升级后需要通过 sonar.java.binaries 指定 classes 位置。
(4)sonar-java 插件版本在 4.1+ 的时候,不统计 api 注释率了,改为 findbugs 中的一个规则。
sonarqube -5.6 插件:sonar-findbugs-plugin-3.4.2,sonar-java-plugin-3.14-build5430.jar, sonar-pmd-plugin-2.6.jar,checkstyle-sonar-plugin-3.5.jar
这个就是有元素遮挡了,要用 js 进行点击
element is not clickable at point 这个异常是有元素遮挡导致的。所以 js 可以执行,你滚动了后 click 执行也是不可以的。
在 findAndWait 内部类 ExpectedCondition,实现 apply 方法执行 js,通过 js 来判断页面是否加载完成。Ext.Ajax.isLoading() 是判断 ext 的,你可以换成自己想要的页面加载完成判断。
boolean isajax = (Boolean) ((JavascriptExecutor) driver).executeScript("return Ext.Ajax.isLoading()");
return (isajax==false);