Skip to content

Commit

Permalink
Apply nohttp check per-project rather than at root
Browse files Browse the repository at this point in the history
Switch nohttp checks to a convention that is applied per-project rather
than at the root. This should help to reduce memory consumption.

Closes gh-40013
  • Loading branch information
philwebb committed Mar 18, 2024
1 parent 9ae5a47 commit 91d150c
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 25 deletions.
21 changes: 0 additions & 21 deletions build.gradle
@@ -1,29 +1,12 @@
plugins {
id "base"
id "org.jetbrains.kotlin.jvm" apply false // https://youtrack.jetbrains.com/issue/KT-30276
id "io.spring.nohttp" version "0.0.11"
}

description = "Spring Boot Build"

defaultTasks 'build'

nohttp {
allowlistFile = project.file("src/nohttp/allowlist.lines")
source.exclude "**/bin/**"
source.exclude "**/build/**"
source.exclude "**/out/**"
source.exclude "**/target/**"
source.exclude "**/.settings/**"
source.exclude "**/.classpath"
source.exclude "**/.project"
source.exclude "spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/docker/export.tar"
}

check {
dependsOn checkstyleNohttp
}

allprojects {
group "org.springframework.boot"

Expand All @@ -41,7 +24,3 @@ allprojects {
resolutionStrategy.cacheChangingModulesFor 0, "minutes"
}
}

tasks.named("checkstyleNohttp").configure {
maxHeapSize = "1536m"
}
1 change: 1 addition & 0 deletions buildSrc/build.gradle
Expand Up @@ -55,6 +55,7 @@ dependencies {
implementation("org.springframework:spring-context")
implementation("org.springframework:spring-core")
implementation("org.springframework:spring-web")
implementation("io.spring.nohttp:nohttp-gradle:0.0.11")

testImplementation("org.assertj:assertj-core:${versions.assertj}")
testImplementation("org.hamcrest:hamcrest:${versions.hamcrest}")
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2023 the original author or authors.
* Copyright 2012-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -43,6 +43,7 @@ public class ConventionsPlugin implements Plugin<Project> {

@Override
public void apply(Project project) {
new NoHttpConventions().apply(project);
new JavaConventions().apply(project);
new MavenPublishingConventions().apply(project);
new AsciidoctorConventions().apply(project);
Expand Down
@@ -0,0 +1,54 @@
/*
* Copyright 2024-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.springframework.boot.build;

import io.spring.nohttp.gradle.NoHttpCheckstylePlugin;
import io.spring.nohttp.gradle.NoHttpExtension;
import org.gradle.api.Project;
import org.gradle.api.file.ConfigurableFileTree;
import org.gradle.api.plugins.quality.Checkstyle;

/**
* Conventions that are applied to enforce that no HTTP urls are used.
*
* @author Phillip Webb
*/
public class NoHttpConventions {

void apply(Project project) {
project.getPluginManager().apply(NoHttpCheckstylePlugin.class);
configureNoHttpExtension(project, project.getExtensions().getByType(NoHttpExtension.class));
project.getTasks()
.named(NoHttpCheckstylePlugin.CHECKSTYLE_NOHTTP_TASK_NAME, Checkstyle.class)
.configure((task) -> task.getConfigDirectory().set(project.getRootProject().file("src/nohttp")));
}

private void configureNoHttpExtension(Project project, NoHttpExtension extension) {
extension.setAllowlistFile(project.getRootProject().file("src/nohttp/allowlist.lines"));
ConfigurableFileTree source = extension.getSource();
source.exclude("bin/**");
source.exclude("build/**");
source.exclude("out/**");
source.exclude("target/**");
source.exclude(".settings/**");
source.exclude(".classpath");
source.exclude(".project");
source.exclude(".gradle");
source.exclude("**/docker/export.tar");
}

}
3 changes: 0 additions & 3 deletions src/nohttp/suppressions.xml
Expand Up @@ -10,7 +10,4 @@
<suppress files="jquery-[0-9]\.[0-9]\.[0-9].js" checks="NoHttp" />
<suppress files="[\\/]spring-boot-project.setup" checks="NoHttp" />
<suppress files="DockerHostTests\.java" checks="NoHttp" />
<suppress files="[\\/]\.gradle[\\/]nodejs[\\/]" checks="NoHttp" />
<suppress files="[\\/]\.gradle[\\/]npm[\\/]" checks="NoHttp" />
<suppress files="[\\/]\.gradle[\\/]_npx[\\/]" checks="NoHttp" />
</suppressions>

0 comments on commit 91d150c

Please sign in to comment.