Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
plugins {
id("org.sonarqube") version "3.4.0.2513"
id("io.github.gradle-nexus.publish-plugin") version "1.1.0"
id("com.autonomousapps.dependency-analysis") version "1.10.0"
}

if (hasProperty("ossrhUsername")) {
Expand Down
12 changes: 11 additions & 1 deletion ruthless-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,13 @@ plugins {
`maven-publish`
}


// TODO not all plugins are in maven central
// TODO ruthless should do the same for java-gradle-plugin
repositories {
gradlePluginPortal()
}

ruthless.lombok()

dependencies {
Expand All @@ -29,7 +36,10 @@ dependencies {
implementation(gav)
}

implementation("dev.lajoscseppento.gradle:gradle-plugin-common:0.2.1")
// TODO what is preferred?
api("com.fasterxml.jackson.core:jackson-databind")
api("dev.lajoscseppento.gradle:gradle-plugin-common:0.2.1")
implementation("com.fasterxml.jackson.core:jackson-core")
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml")
// #55 Direct declaration over dependency constraints to also propagate to the POM
implementation("commons-codec:commons-codec:1.15")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import dev.lajoscseppento.ruthless.plugin.logging.RuthlessLogger;
import java.util.Collections;
import java.util.List;
import javax.annotation.Nullable;
import lombok.NonNull;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
Expand Down Expand Up @@ -37,8 +38,12 @@ public abstract class AbstractProjectPlugin implements Plugin<Project> {
protected RepositoryHandler repositories;
protected TaskContainer tasks;

// TODO remove these from AbstractProjectPlugin
@Nullable
protected GradlePluginDevelopmentExtension gradlePlugin;
@Nullable
protected JavaPluginExtension java;
@Nullable
protected SourceSetContainer sourceSets;

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,21 @@
import dev.lajoscseppento.gradle.plugin.common.impl.Utils;
import dev.lajoscseppento.ruthless.plugin.extension.RuthlessExtension;
import dev.lajoscseppento.ruthless.plugin.extension.impl.RuthlessExtensionImpl;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import org.gradle.api.GradleException;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.Task;
import org.gradle.api.plugins.BasePlugin;
import org.gradle.api.tasks.SourceSet;
import org.gradle.api.tasks.TaskProvider;
import org.gradle.language.base.plugins.LifecycleBasePlugin;
import org.sonarqube.gradle.SonarQubeExtension;
import org.sonarqube.gradle.SonarQubePlugin;

public class RuthlessBasePlugin extends AbstractProjectPlugin {
@Override
Expand All @@ -16,10 +30,8 @@ public void apply() {
logger.info("Adding extension to {}", project);
configureExtension();

if (project.equals(project.getRootProject())) {
logger.info("Configuring sonar on {}", project);
configureSonar();
}
logger.info("Configuring Sonar Analysis on {}", project);
configureSonar();

project.afterEvaluate(proj -> afterEvaluate());
}
Expand All @@ -29,8 +41,60 @@ private void configureExtension() {
extensions.add(RuthlessExtension.class, "ruthless", ruthless);
}

@Override
protected List<Class<? extends Plugin<Project>>> requiredPlugins() {
return Arrays.asList(BasePlugin.class);
}

private void configureSonar() {
// TODO
if (project.equals(project.getRootProject())) {
project.getPluginManager().apply(SonarQubePlugin.class);
}

TaskProvider<Task> sonarqubeTask =
project.getRootProject().getTasks().named(SonarQubeExtension.SONARQUBE_TASK_NAME);

tasks.withType(
Task.class,
task -> {
if (task.getName().equals(LifecycleBasePlugin.CHECK_TASK_NAME)) {
sonarqubeTask.configure(sqTask -> sqTask.dependsOn(task));
}
});

logger.lifecycle("B");
logger.lifecycle("{}", sourceSets);
if (sourceSets != null) {
// TODO this is null, since it's context there is no java plugin yet
SonarQubeExtension sonarqube =
(SonarQubeExtension)
project.getExtensions().getByName(SonarQubeExtension.SONARQUBE_EXTENSION_NAME);

logger.lifecycle("A");
sonarqube.properties(
sqProperties -> {
logger.lifecycle("Z");
Collection<?> sonarTests =
(Collection<?>) sqProperties.getProperties().get("sonar.tests");
List<Object> newSonarTests = new ArrayList<>(sonarTests);

sourceSets.withType(
SourceSet.class,
sourceSet -> {
logger.lifecycle(sourceSet.getName());
if (sourceSet.getName().endsWith("Test")) {
sourceSet.getAllSource().getSrcDirs().stream()
.filter(File::exists)
.forEach(newSonarTests::add);
}
});

if (sonarTests.size() != newSonarTests.size()) {
sqProperties.property("sonar.tests", newSonarTests);
logger.lifecycle("{}",newSonarTests);
}
});
}
}

private void afterEvaluate() {
Expand Down
3 changes: 3 additions & 0 deletions ruthless-plugin/src/main/resources/configuration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,6 @@ gradlePlugins:
- groupId: io.spring.gradle
artifactId: dependency-management-plugin
version: 1.0.11.RELEASE
- groupId: org.sonarsource.scanner.gradle
artifactId: sonarqube-gradle-plugin
version: 3.4.0.2513