是否可以对所有口味进行一次声纳分析?我有一个多风格的 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
我正在尝试从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的创建方式会出现-如使用fromAction或fromCallable但它的行为相同.我也找不到任何其他操作员来替换 …