小编Ada*_*m J的帖子

在一次 Sonarquebe 分析中涵盖所有 gradle 风格

是否可以对所有口味进行一次声纳分析?我有一个多风格的 Android 项目,其中不同风格文件夹中的某些文件有不同的实现。这些文件在风味测试文件夹中有相应的测试。所以在示例中我的 src 结构是:

/main/java/../ConfigurationService.kt
/flavor1/java/../ConfigurationService.kt
/flavor2/java/../ConfigurationService.kt
/test/java/../ConfigurationServiceTests.kt
/testFlavor1/java/../ConfigurationServiceTests.kt
/testFlavor2/java/../ConfigurationServiceTests.kt
Run Code Online (Sandbox Code Playgroud)

现在我可以使用,sonarqube.androidVariant但这会让我一次只能配置一个变体,所以如果我想检查第二种风格的分析,我需要使用不同的设置再次运行该任务,而这在 Gitlab CI 中无法显示多个变体分析。我能够在运行声纳之前配置单独的 jacoco 任务来生成所有类型的覆盖率报告。然后我尝试将源目录添加到 sonarplugin,如下所示:

sonarqube {
    properties {
            //standard plugin configuration
            android.libraryVariants.each { variant ->
                if (variant.buildType.name != "debug") return //we run sonar only on debug
                def variantName = variant.name
                def flavorName = variant.flavorName
                properties["sonar.sources"] += "./src/${flavorName}/"
                properties["sonar.tests"] += "./src/test${flavorName.capitalize()}"
                // and so on for binaries, jacoco report paths etc.
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这最终会出现错误:

ConfigurationService.kt can't be indexed twice. Please check that inclusion/exclusion patterns …
Run Code Online (Sandbox Code Playgroud)

gradle sonarqube android-productflavors android-build-flavors

7
推荐指数
0
解决办法
487
查看次数

使用可互补的andThen运算符调用的RxJava2序列顺序

我正在尝试从RxJava1迁移到RxJava2.我更换所有的部分代码,我以前有Observable<Void>Compleatable.但是我遇到了一个流调用顺序的问题.当我以前处理Observables并使用map和flatMaps时,代码按预期工作.然而,andthen()运营商似乎有点不同.这是一个简化问题本身的示例代码.

public Single<String> getString() {
    Log.d("Starting flow..")
    return getCompletable().andThen(getSingle());
}

public Completable getCompletable() {
    Log.d("calling getCompletable");
    return Completable.create(e -> {
                Log.d("doing actuall completable work");
                e.onComplete();
            }
    );
}

public Single<String> getSingle() {
    Log.d("calling getSingle");
    if(conditionBasedOnActualCompletableWork) {
        return getSingleA();
    }else{
        return getSingleB();
    }
}
Run Code Online (Sandbox Code Playgroud)

我最后在日志中看到的是:

  1-> Log.d("Starting flow..")
  2-> Log.d("calling getCompletable");
  3-> Log.d("calling getSingle");
  4-> Log.d("doing actuall completable work");
Run Code Online (Sandbox Code Playgroud)

正如你可能想到的那样,我希望在第3行之前调用第4行(之后andthen()运算符的名称表明代码将在'Completable完成它的工作之后被调用').以前我是创造了Observable<Void>使用Async.toAsync()运营商和现在被称为该方法getSingle是在flatMap流-它的工作就像我预期,所以登录前4 3.现在我试图改变Compleatable的创建方式会出现-如使用fromActionfromCallable但它的行为相同.我也找不到任何其他操作员来替换 …

stream sequence rx-java2

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