小编Noe*_*Yap的帖子

如何让Sonar导出测试统计数据?

我定义了以下Sonar Ant目标:

<target name='sonar'>
    <property name='sonar.sources' value='${src.dir}'/>
    <property name='sonar.tests' value='${test.src.dir}'/>
    <property name='sonar.binaries' value='build/classes'/>
    <path id='jars'>
        <fileset dir='${env.JAVA_HOME}/jre/lib' includes='*.jar'/>
        <fileset dir='build/lib/test' includes='*.jar'/>
    </path>
    <pathconvert property='sonar.libraries' refid='jars' pathsep=','/>

    <exec executable='p4' outputproperty='p4.P4CLIENT'>
        <arg value='set'/>
        <arg value='P4CLIENT'/>
    </exec>
    <propertyregex
            property='p4client'
            input='${p4.P4CLIENT}'
            regexp='P4CLIENT=([^ ]+) *.*'
            replace='\1'/>
    <propertyregex
            property='sonar.timestamp'
            input='${build.time}'
            regexp='_'
            replace='T'/>
    <sonar:sonar key='com.netflix:${module.name}' version='${p4client}@${sonar.timestamp}' xmlns:sonar='antlib:org.sonar.ant'/>

    <property name='sonar.dynamicAnalysis' value='reuseReports'/>
    <property name='sonar.emma.reportPath' value='${coverage.dir}'/>
</target>
Run Code Online (Sandbox Code Playgroud)

当我运行'ant sonar'并在我的浏览器中调出Sonar时,我会看到有关src目录中的类的信息,但是没有关于测试目录中的内容的信息.

如果我将$ {test.src.dir}添加到sonar.sources而不设置sonar.tests,我会看到有关测试类的一些信息,但Sonar仍会报告0测试成功.

我如何获得它以便我可以深入了解每种测试方法及其统计数据?

ant junit emma sonarqube

5
推荐指数
2
解决办法
5460
查看次数

是否可以在主Groovy项目中使用由Gradle buildSrc编译的类?

buildSrc/build.gradle编译的类在主PROJECT类中使用时不会在运行时解析.

My Groovy project structure looks like this:
-PROJECT
    -buildSrc/
        -build.gradle
        -/src/main/groovy
            - com.company.global.test.report
    -src/test/groovy
    -build.gradle
Run Code Online (Sandbox Code Playgroud)

有什么东西我可以添加到顶级PROJECT/build.gradle,以允许它编译的类使用buildSrc/build.gradle编译的类?

groovy build gradle

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

如何在命令行中指定git电子邮件地址?

我正在使用两个不同的 Git 存储库(即 github 和 stash),并且对于每个存储库我想使用不同的电子邮件地址。我知道我可以使用git config,但我不想每次创建新工作区时都必须记住执行此操作。因此,我想创建一个在命令行上设置电子邮件地址的别名。这可以做到吗?

我想我可以创建一个脚本(而不是别名)git config,但是有没有更简单的方法来做到这一点?

git

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

如何设置带有审阅者滞后时间(又名堆叠差异)的 Arcanist 工作流程?

我对 git 相当陌生,对 Phabricator 甚至更陌生,我试图在项目早期建立一个干净的工作流程。据我了解,使用 git 的正确做法是为每个功能创建一个新分支,在分支中实现它,然后将分支合并到 master 中。效果很好,没问题。

输入 Phabricator 并进行预推送代码审查。我创建一个分支,我们称之为“B”,实现一些东西,运行“arc diff”将其进入 Phabricator 的差异审查系统,等待批准,最后运行“arc land”推送到主存储库。到目前为止,一切都很好。但是,我不想在等待审稿人回复我的同时暂停进一步的开发。

因此,我正在审查我的提交,并且我想开始研究细化或依赖功能。我创建了一个分支,我们称之为“SB”,然后开始工作。我让 SB 准备好送审,但 B 尚未获得批准。“arc diff”看起来会将现有提交与我的新更改结合起来,这是我不想要的 - 这是一个新更改,而不是对旧更改的更新。我尝试“arc diff B”,它起作用了,我在 Differential 中得到了新的修订版,其中仅包含新的更改。B获得批准,我在B上运行“arc land”来提交。这有效。

SB获得批准,我在SB上运行“arc land”来提交。我收到一个使用异常 - Arcanist 将两个修订版视为在 SB 中而不是在 master 中。我尝试切换到 master 并运行更新,然后重试。同样的错误。我尝试使用 --revision 标志来实现这两个更改(即使其中之一确实已经实现)。我遇到合并冲突。我解决并提交合并冲突,然后重试。我再次遇到完全相同的合并冲突。

我最终想到了在 SB 上尝试 rebase 的想法,这最终让“arc land”正常工作。所以,我有一个技术上可行的解决方案,但这对我来说似乎很笨拙和尴尬。有没有更好的方法来避免手动变基的需要,只是为了让 Arcanist 认识到不,我已经着陆的修订版不是我现在着陆的一部分?

git phabricator arcanist

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

使用 Gradle Shadow 插件时如何仅包含项目和重定位的类?

我有以下几点:

shadowJar {
    relocate 'com.google.common', 'com.example.com.google.common'
}
Run Code Online (Sandbox Code Playgroud)

它会生成包含所有模块依赖项的“-all.jar”文件。

shadowJar {
    relocate 'com.google.common', 'com.example.com.google.common'

    dependencies {
        include('com.example.com.google.common')
    }
}
Run Code Online (Sandbox Code Playgroud)

和:

shadowJar {
    relocate 'com.google.common', 'com.example.com.google.common'

    dependencies {
        include(dependency('com.google.guava:guava:14+'))
    }
}
Run Code Online (Sandbox Code Playgroud)

两者都产生绝对没有类的“-all.jar”文件。

如何创建仅包含项目类和重定位类的“-all.jar”文件?

gradle gradle-shadow-plugin

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

如何设置条件 Gradle 属性?

我想做如下的事情:

if (System.getenv('JENKINS_URL') == null) {
  org.gradle.daemon = true
  org.gradle.configureondemand = true
  org.gradle.parallel = true
}
Run Code Online (Sandbox Code Playgroud)

但这个if条件似乎被完全忽略了。我还尝试过诸如org.gradle.daemon = System.getenv('JENKINS_URL') == nullorg.gradle.daemon = Eval.me("System.getenv('JENKINS_URL') == null")、之类的东西org.gradle.daemon = { System.getenv('JENKINS_URL') == null }()org.gradle.daemon = "${System.getenv('JENKINS_URL') == null}"所有这些都从未将属性设置为 true。

是否可以设置其值是有条件的 Gradle 属性设置?

gradle

5
推荐指数
0
解决办法
2168
查看次数

如何从JobDSL脚本中访问Jenkins作业参数列表?

我想保存传递给JobDSL作业的参数.我知道我可以参考个别参数,但我想使代码通用.我如何访问传递给作业的参数列表?

当前代码看起来像:

final jobParameters = new File('parameters')
jobParameters.write("""
    |AOEU=${AOEU}
    |SNTH=${SNTH}
"""[1..-1].stripMargin().trim())
Run Code Online (Sandbox Code Playgroud)

我希望能够让它看起来像:

final jobParameters = new File('parameters')
jobParameters.write(params.iterator().join('\n'))
Run Code Online (Sandbox Code Playgroud)

params 是Build Flow Plugin中可用的东西,而不是JobDSL插件.

jenkins jenkins-job-dsl

5
推荐指数
2
解决办法
7451
查看次数

如何访问 Gradle 使用的`java.home`?

./gradlew properties显示没有具有值的属性,${JAVA_HOME}并且以下发出错误指示不存在此类属性:

println org.gradle.java.home
println gradle.java.home
println java.home
Run Code Online (Sandbox Code Playgroud)

最后,我想为tools.jarJDK 的一部分指定一个编译时依赖项。例如:

dependencies {
  compile files("${java.home}/lib/tools.jar")
}
Run Code Online (Sandbox Code Playgroud)

gradle

5
推荐指数
3
解决办法
4755
查看次数

如何超时Bash命令并计算发送到stdout的行数?

我想做点什么,timeout 12s tail -f access.log | wc -l但我没有看到输出wc.能做到这一点需要做些什么?

bash

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

如何使用Hamcrest来测试异常?

我有以下代码:

def f(String s) {
  assert !s?.contains('.')
}
Run Code Online (Sandbox Code Playgroud)

什么 Hamcrest 匹配器可用于测试断言?我知道我可以使用try/catch块,但我更喜欢将测试的圈复杂度保持为 1。

groovy hamcrest

4
推荐指数
1
解决办法
8156
查看次数