Compare commits

..

No commits in common. "main" and "0.9.5" have entirely different histories.
main ... 0.9.5

27 changed files with 122 additions and 546 deletions

View file

@ -1,16 +1,14 @@
name: bld-ci name: bld-ci
on: [ push, pull_request, workflow_dispatch ] on: [push, pull_request, workflow_dispatch]
jobs: jobs:
build-bld-project: build-bld-project:
runs-on: ubuntu-latest
strategy: strategy:
matrix: matrix:
java-version: [ 17, 21, 24 ] java-version: [17, 21, 22]
kotlin-version: [ 1.9.25, 2.0.21, 2.1.20 ]
os: [ ubuntu-latest, windows-latest, macos-latest ]
runs-on: ${{ matrix.os }}
steps: steps:
- name: Checkout source repository - name: Checkout source repository
@ -24,16 +22,12 @@ jobs:
distribution: "zulu" distribution: "zulu"
java-version: ${{ matrix.java-version }} java-version: ${{ matrix.java-version }}
- name: Download dependencies
run: ./bld download
- name: Download dependencies [examples] - name: Download dependencies [examples]
working-directory: examples working-directory: examples
run: ./bld download run: ./bld download
- name: Run Detekt [examples]
working-directory: examples
run: ./bld compile test-ci
- name: Download dependencies
run: ./bld download
- name: Run tests - name: Run tests
run: ./bld compile test run: ./bld compile test

View file

@ -47,11 +47,11 @@ jobs:
uses: actions/configure-pages@v3 uses: actions/configure-pages@v3
- name: Upload artifact - name: Upload artifact
uses: actions/upload-pages-artifact@v3 uses: actions/upload-pages-artifact@v1
with: with:
# Upload generated Javadocs repository # Upload generated Javadocs repository
path: "build/javadoc/" path: "build/javadoc/"
- name: Deploy to GitHub Pages - name: Deploy to GitHub Pages
id: deployment id: deployment
uses: actions/deploy-pages@v4 uses: actions/deploy-pages@v1

13
.idea/icon.svg generated
View file

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 179 108" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(1,0,0,1,-210.511,-96.3382)">
<g transform="matrix(1,0,0,1,-23.3386,-649.816)">
<g transform="matrix(0.221288,0,0,0.24,73.9536,390.254)">
<path d="M722.568,1482.92L722.568,1921.1L808.968,1921.1L808.968,1888.7C822.168,1907.9 846.168,1930.1 893.568,1930.1C933.168,1930.1 961.968,1917.5 985.368,1893.5C1012.97,1865.9 1027.37,1827.5 1027.37,1786.1C1027.37,1741.7 1011.17,1705.1 985.368,1680.5C961.968,1658.3 928.968,1644.5 892.368,1644.5C862.968,1644.5 830.568,1654.1 808.968,1683.5L808.968,1482.92L722.568,1482.92ZM871.368,1718.9C888.768,1718.9 903.768,1723.7 917.568,1736.9C930.168,1748.9 938.568,1766.3 938.568,1787.9C938.568,1807.7 930.168,1825.1 917.568,1837.1C904.368,1849.7 887.568,1855.7 872.568,1855.7C856.368,1855.7 837.168,1849.1 823.368,1835.9C813.168,1826.3 803.568,1810.1 803.568,1787.9C803.568,1765.1 812.568,1749.5 822.768,1738.7C836.568,1724.3 852.768,1718.9 871.368,1718.9Z" style="fill:rgb(35,146,255);fill-rule:nonzero;"/>
<rect x="1083.77" y="1482.92" width="86.4" height="438.182" style="fill:rgb(250,144,82);fill-rule:nonzero;"/>
<path d="M1531.37,1482.92L1444.97,1482.92L1444.97,1683.5C1423.37,1654.1 1390.97,1644.5 1361.57,1644.5C1324.97,1644.5 1291.97,1658.3 1268.57,1680.5C1242.77,1705.1 1226.57,1741.7 1226.57,1786.1C1226.57,1827.5 1240.97,1865.9 1268.57,1893.5C1291.97,1917.5 1320.77,1930.1 1360.37,1930.1C1407.77,1930.1 1431.77,1907.9 1444.97,1888.7L1444.97,1921.1L1531.37,1921.1L1531.37,1482.92ZM1382.57,1718.9C1401.17,1718.9 1417.37,1724.3 1431.17,1738.7C1441.37,1749.5 1450.37,1765.1 1450.37,1787.9C1450.37,1810.1 1440.77,1826.3 1430.57,1835.9C1416.77,1849.1 1397.57,1855.7 1381.37,1855.7C1366.37,1855.7 1349.57,1849.7 1336.37,1837.1C1323.77,1825.1 1315.37,1807.7 1315.37,1787.9C1315.37,1766.3 1323.77,1748.9 1336.37,1736.9C1350.17,1723.7 1365.17,1718.9 1382.57,1718.9Z" style="fill:rgb(35,146,255);fill-rule:nonzero;"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -2,12 +2,12 @@
<library name="bld"> <library name="bld">
<CLASSES> <CLASSES>
<root url="file://$PROJECT_DIR$/lib/bld" /> <root url="file://$PROJECT_DIR$/lib/bld" />
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1.jar!/" /> <root url="jar://$USER_HOME$/.bld/dist/bld-2.0.1.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<root url="file://$PROJECT_DIR$/lib/bld" /> <root url="file://$PROJECT_DIR$/lib/bld" />
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1-sources.jar!/" /> <root url="jar://$USER_HOME$/.bld/dist/bld-2.0.1-sources.jar!/" />
</SOURCES> </SOURCES>
<excluded> <excluded>
<root url="jar://$PROJECT_DIR$/lib/bld/bld-wrapper.jar!/" /> <root url="jar://$PROJECT_DIR$/lib/bld/bld-wrapper.jar!/" />

View file

@ -7,7 +7,7 @@
<SOURCES> <SOURCES>
<root url="file://$PROJECT_DIR$/lib/compile" /> <root url="file://$PROJECT_DIR$/lib/compile" />
</SOURCES> </SOURCES>
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" /> <jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="false" />
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" type="SOURCES" /> <jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="false" type="SOURCES" />
</library> </library>
</component> </component>

View file

@ -8,7 +8,7 @@
<SOURCES> <SOURCES>
<root url="file://$PROJECT_DIR$/lib/runtime" /> <root url="file://$PROJECT_DIR$/lib/runtime" />
</SOURCES> </SOURCES>
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" /> <jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="false" />
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" type="SOURCES" /> <jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="false" type="SOURCES" />
</library> </library>
</component> </component>

View file

@ -8,7 +8,7 @@
<SOURCES> <SOURCES>
<root url="file://$PROJECT_DIR$/lib/test" /> <root url="file://$PROJECT_DIR$/lib/test" />
</SOURCES> </SOURCES>
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" /> <jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="false" />
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" type="SOURCES" /> <jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="false" type="SOURCES" />
</library> </library>
</component> </component>

View file

@ -9,7 +9,7 @@
], ],
"java.configuration.updateBuildConfiguration": "automatic", "java.configuration.updateBuildConfiguration": "automatic",
"java.project.referencedLibraries": [ "java.project.referencedLibraries": [
"${HOME}/.bld/dist/bld-2.2.1.jar", "${HOME}/.bld/dist/bld-2.0.1.jar",
"lib/**/*.jar" "lib/**/*.jar"
] ]
} }

View file

@ -3,20 +3,12 @@
[![License](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![License](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![Java](https://img.shields.io/badge/java-17%2B-blue)](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) [![Java](https://img.shields.io/badge/java-17%2B-blue)](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
[![bld](https://img.shields.io/badge/2.2.1-FA9052?label=bld&labelColor=2392FF)](https://rife2.com/bld) [![bld](https://img.shields.io/badge/2.0.1-FA9052?label=bld&labelColor=2392FF)](https://rife2.com/bld)
[![Release](https://flat.badgen.net/maven/v/metadata-url/repo.rife2.com/releases/com/uwyn/rife2/bld-detekt/maven-metadata.xml?color=blue)](https://repo.rife2.com/#/releases/com/uwyn/rife2/bld-detekt) [![Release](https://flat.badgen.net/maven/v/metadata-url/repo.rife2.com/releases/com/uwyn/rife2/bld-detekt/maven-metadata.xml?color=blue)](https://repo.rife2.com/#/releases/com/uwyn/rife2/bld-detekt)
[![Snapshot](https://flat.badgen.net/maven/v/metadata-url/repo.rife2.com/snapshots/com/uwyn/rife2/bld-detekt/maven-metadata.xml?label=snapshot)](https://repo.rife2.com/#/snapshots/com/uwyn/rife2/bld-detekt) [![Snapshot](https://flat.badgen.net/maven/v/metadata-url/repo.rife2.com/snapshots/com/uwyn/rife2/bld-detekt/maven-metadata.xml?label=snapshot)](https://repo.rife2.com/#/snapshots/com/uwyn/rife2/bld-detekt)
[![GitHub CI](https://github.com/rife2/bld-detekt/actions/workflows/bld.yml/badge.svg)](https://github.com/rife2/bld-detekt/actions/workflows/bld.yml) [![GitHub CI](https://github.com/rife2/bld-detekt/actions/workflows/bld.yml/badge.svg)](https://github.com/rife2/bld-detekt/actions/workflows/bld.yml)
To install the latest version, add the following to the `lib/bld/bld-wrapper.properties` file: To install, please refer to the [extensions documentation](https://github.com/rife2/bld/wiki/Extensions).
```properties
bld.extension-detekt=com.uwyn.rife2:bld-detekt
```
For more information, please refer to the [extensions](https://github.com/rife2/bld/wiki/Extensions) documentation.
## Check Source Code with Detekt
To check all Kotlin source code located in the project, add the following to your build file: To check all Kotlin source code located in the project, add the following to your build file:
```java ```java

View file

@ -7,9 +7,9 @@
<!-- BEST PRACTICES --> <!-- BEST PRACTICES -->
<rule ref="category/java/bestpractices.xml"> <rule ref="category/java/bestpractices.xml">
<exclude name="AvoidPrintStackTrace"/> <exclude name="AvoidPrintStackTrace"/>
<exclude name="JUnit4TestShouldUseTestAnnotation"/>
<exclude name="JUnitTestContainsTooManyAsserts"/>
<exclude name="GuardLogStatement"/> <exclude name="GuardLogStatement"/>
<exclude name="UnitTestContainsTooManyAsserts"/>
<exclude name="UnitTestShouldUseTestAnnotation"/>
</rule> </rule>
<rule ref="category/java/bestpractices.xml/MissingOverride"> <rule ref="category/java/bestpractices.xml/MissingOverride">

View file

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="BldConfiguration">
<events />
</component>
</project>

View file

@ -2,12 +2,12 @@
<library name="bld"> <library name="bld">
<CLASSES> <CLASSES>
<root url="file://$PROJECT_DIR$/lib/bld" /> <root url="file://$PROJECT_DIR$/lib/bld" />
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1.jar!/" /> <root url="jar://$USER_HOME$/.bld/dist/bld-2.0.1.jar!/" />
</CLASSES> </CLASSES>
<JAVADOC /> <JAVADOC />
<SOURCES> <SOURCES>
<root url="file://$PROJECT_DIR$/lib/bld" /> <root url="file://$PROJECT_DIR$/lib/bld" />
<root url="jar://$USER_HOME$/.bld/dist/bld-2.2.1-sources.jar!/" /> <root url="jar://$USER_HOME$/.bld/dist/bld-2.0.1-sources.jar!/" />
</SOURCES> </SOURCES>
<excluded> <excluded>
<root url="jar://$PROJECT_DIR$/lib/bld/bld-wrapper.jar!/" /> <root url="jar://$PROJECT_DIR$/lib/bld/bld-wrapper.jar!/" />

View file

@ -7,7 +7,7 @@
<SOURCES> <SOURCES>
<root url="file://$PROJECT_DIR$/lib/compile" /> <root url="file://$PROJECT_DIR$/lib/compile" />
</SOURCES> </SOURCES>
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" /> <jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="false" />
<jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="true" type="SOURCES" /> <jarDirectory url="file://$PROJECT_DIR$/lib/compile" recursive="false" type="SOURCES" />
</library> </library>
</component> </component>

View file

@ -8,7 +8,7 @@
<SOURCES> <SOURCES>
<root url="file://$PROJECT_DIR$/lib/runtime" /> <root url="file://$PROJECT_DIR$/lib/runtime" />
</SOURCES> </SOURCES>
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" /> <jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="false" />
<jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="true" type="SOURCES" /> <jarDirectory url="file://$PROJECT_DIR$/lib/runtime" recursive="false" type="SOURCES" />
</library> </library>
</component> </component>

View file

@ -8,7 +8,7 @@
<SOURCES> <SOURCES>
<root url="file://$PROJECT_DIR$/lib/test" /> <root url="file://$PROJECT_DIR$/lib/test" />
</SOURCES> </SOURCES>
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" /> <jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="false" />
<jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="true" type="SOURCES" /> <jarDirectory url="file://$PROJECT_DIR$/lib/test" recursive="false" type="SOURCES" />
</library> </library>
</component> </component>

View file

@ -9,7 +9,7 @@
], ],
"java.configuration.updateBuildConfiguration": "automatic", "java.configuration.updateBuildConfiguration": "automatic",
"java.project.referencedLibraries": [ "java.project.referencedLibraries": [
"${HOME}/.bld/dist/bld-2.2.1.jar", "${HOME}/.bld/dist/bld-2.0.1.jar",
"lib/**/*.jar" "lib/**/*.jar"
] ]
} }

Binary file not shown.

View file

@ -1,8 +1,8 @@
bld.downloadExtensionJavadoc=false bld.downloadExtensionJavadoc=false
bld.downloadExtensionSources=true bld.downloadExtensionSources=true
bld.downloadLocation= bld.downloadLocation=
bld.extension-detekt=com.uwyn.rife2:bld-detekt:0.9.10-SNAPSHOT bld.extension-detekt=com.uwyn.rife2:bld-detekt:0.9.5
bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.1.0-SNAPSHOT bld.extension-kotlin=com.uwyn.rife2:bld-kotlin:1.0.0
bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.repositories=MAVEN_LOCAL,MAVEN_CENTRAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
bld.sourceDirectories= bld.sourceDirectories=
bld.version=2.2.1 bld.version=2.0.1

View file

@ -31,14 +31,13 @@ public class ExampleBuild extends Project {
repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES); repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES);
final var kotlin = version(2, 1, 20); final var kotlin = version(2, 0, 0);
scope(compile) scope(compile)
.include(dependency("org.jetbrains.kotlin", "kotlin-stdlib", kotlin)); .include(dependency("org.jetbrains.kotlin", "kotlin-stdlib", kotlin));
scope(test) scope(test)
.include(dependency("org.jetbrains.kotlin", "kotlin-test-junit5", kotlin)) .include(dependency("org.jetbrains.kotlin", "kotlin-test-junit5", kotlin))
.include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 12, 1))) .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 10, 3)))
.include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 12, 1))) .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 10, 3)));
.include(dependency("org.junit.platform", "junit-platform-launcher", version(1, 12, 1)));
// Include the Kotlin source directory when creating or publishing sources Java Archives // Include the Kotlin source directory when creating or publishing sources Java Archives
jarSourcesOperation().sourceDirectories(new File(srcMainDirectory(), "kotlin")); jarSourcesOperation().sourceDirectories(new File(srcMainDirectory(), "kotlin"));
@ -46,14 +45,14 @@ public class ExampleBuild extends Project {
public static void main(String[] args) { public static void main(String[] args) {
// Enable detailed logging // Enable detailed logging
var level = Level.ALL; // var level = Level.ALL;
var logger = Logger.getLogger("rife.bld.extension"); // var logger = Logger.getLogger("rife.bld.extension");
var consoleHandler = new ConsoleHandler(); // var consoleHandler = new ConsoleHandler();
//
consoleHandler.setLevel(level); // consoleHandler.setLevel(level);
logger.addHandler(consoleHandler); // logger.addHandler(consoleHandler);
logger.setLevel(level); // logger.setLevel(level);
logger.setUseParentHandlers(false); // logger.setUseParentHandlers(false);
new ExampleBuild().start(args); new ExampleBuild().start(args);
} }
@ -101,13 +100,4 @@ public class ExampleBuild extends Project {
.input("src/test/kotlin") .input("src/test/kotlin")
.execute(); .execute();
} }
@BuildCommand(value = "test-ci", summary = "Run detek with a test baseline")
public void testCi() throws ExitStatusException, IOException, InterruptedException {
// Run detek with the test basline (for CI testing)
new DetektOperation()
.fromProject(this)
.baseline("src/test/resources/detekt-baseline.xml")
.execute();
}
} }

View file

@ -1,12 +0,0 @@
<?xml version="1.0" ?>
<SmellBaseline>
<ManuallySuppressedIssues/>
<CurrentIssues>
<ID>EmptyIfBlock:Example.kt$Example.Companion${ }</ID>
<ID>MagicNumber:Example.kt$Example$5</ID>
<ID>NewLineAtEndOfFile:ExampleTest.kt$com.example.ExampleTest.kt</ID>
<ID>ThrowingExceptionsWithoutMessageOrCause:Example.kt$Example.Companion$IllegalStateException()</ID>
<ID>UseCheckOrError:Example.kt$Example.Companion$throw IllegalStateException()</ID>
<ID>VariableNaming:Example.kt$Example$// https://detekt.dev/docs/rules/naming#variablenaming val Message: String get() = "Hello World!"</ID>
</CurrentIssues>
</SmellBaseline>

Binary file not shown.

View file

@ -1,8 +1,8 @@
bld.downloadExtensionJavadoc=false bld.downloadExtensionJavadoc=false
bld.downloadExtensionSources=true bld.downloadExtensionSources=true
bld.downloadLocation= bld.downloadLocation=
bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.4 bld.extension-exec=com.uwyn.rife2:bld-exec:1.0.2
bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.2.1 bld.extension-pmd=com.uwyn.rife2:bld-pmd:1.1.4
bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES bld.repositories=MAVEN_CENTRAL,MAVEN_LOCAL,RIFE2_SNAPSHOTS,RIFE2_RELEASES
bld.sourceDirectories= bld.sourceDirectories=
bld.version=2.2.1 bld.version=2.0.1

View file

@ -1,5 +1,5 @@
/* /*
* Copyright 2023-2025 the original author or authors. * Copyright 2023-2024 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -23,7 +23,6 @@ import rife.bld.publish.PublishLicense;
import rife.bld.publish.PublishScm; import rife.bld.publish.PublishScm;
import java.util.List; import java.util.List;
import java.util.Locale;
import static rife.bld.dependencies.Repository.*; import static rife.bld.dependencies.Repository.*;
import static rife.bld.dependencies.Scope.compile; import static rife.bld.dependencies.Scope.compile;
@ -34,22 +33,20 @@ public class DetektOperationBuild extends Project {
public DetektOperationBuild() { public DetektOperationBuild() {
pkg = "rife.bld.extension"; pkg = "rife.bld.extension";
name = "DetektOperation"; name = "DetektOperation";
version = version(0, 9, 10, "SNAPSHOT"); version = version(0, 9, 5);
javaRelease = 17; javaRelease = 17;
downloadSources = true; downloadSources = true;
autoDownloadPurge = true; autoDownloadPurge = true;
repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES, RIFE2_SNAPSHOTS); repositories = List.of(MAVEN_LOCAL, MAVEN_CENTRAL, RIFE2_RELEASES, RIFE2_SNAPSHOTS);
scope(compile) scope(compile)
.include(dependency("com.uwyn.rife2", "bld", version(2, 2, 1))) .include(dependency("com.uwyn.rife2", "bld", version(2, 0, 1)))
.include(dependency("io.gitlab.arturbosch.detekt", "detekt-cli", version(1, 23, 8))); .include(dependency("io.gitlab.arturbosch.detekt", "detekt-cli", version(1, 23, 6)));
scope(test) scope(test)
.include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 12, 1))) .include(dependency("org.junit.jupiter", "junit-jupiter", version(5, 10, 3)))
.include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 12, 1))) .include(dependency("org.junit.platform", "junit-platform-console-standalone", version(1, 10, 3)))
.include(dependency("org.assertj", "assertj-core", version(3, 27, 3))); .include(dependency("org.assertj", "assertj-core", version(3, 26, 3)));
javadocOperation() javadocOperation()
.javadocOptions() .javadocOptions()
.author() .author()
@ -59,26 +56,28 @@ public class DetektOperationBuild extends Project {
publishOperation() publishOperation()
.repository(version.isSnapshot() ? repository("rife2-snapshot") : repository("rife2")) .repository(version.isSnapshot() ? repository("rife2-snapshot") : repository("rife2"))
.repository(repository("github"))
.info() .info()
.groupId("com.uwyn.rife2") .groupId("com.uwyn.rife2")
.artifactId("bld-detekt") .artifactId("bld-detekt")
.description("bld Detekt Extension") .description("bld Detekt Extension")
.url("https://github.com/rife2/bld-detekt") .url("https://github.com/rife2/bld-detekt")
.developer(new PublishDeveloper() .developer(
.id("ethauvin") new PublishDeveloper()
.name("Erik C. Thauvin") .id("ethauvin")
.email("erik@thauvin.net") .name("Erik C. Thauvin")
.url("https://erik.thauvin.net/") .email("erik@thauvin.net")
.url("https://erik.thauvin.net/")
) )
.license(new PublishLicense() .license(
.name("The Apache License, Version 2.0") new PublishLicense()
.url("https://www.apache.org/licenses/LICENSE-2.0.txt") .name("The Apache License, Version 2.0")
.url("https://www.apache.org/licenses/LICENSE-2.0.txt")
) )
.scm(new PublishScm() .scm(
.connection("scm:git:https://github.com/rife2/bld-detekt.git") new PublishScm()
.developerConnection("scm:git:git@github.com:rife2/bld-detekt.git") .connection("scm:git:https://github.com/rife2/bld-detekt.git")
.url("https://github.com/rife2/bld-detekt") .developerConnection("scm:git:git@github.com:rife2/bld-detekt.git")
.url("https://github.com/rife2/bld-detekt")
) )
.signKey(property("sign.key")) .signKey(property("sign.key"))
.signPassphrase(property("sign.passphrase")); .signPassphrase(property("sign.passphrase"));
@ -98,13 +97,10 @@ public class DetektOperationBuild extends Project {
@Override @Override
public void test() throws Exception { public void test() throws Exception {
var os = System.getProperty("os.name"); new ExecOperation()
if (os != null && os.toLowerCase(Locale.US).contains("linux")) { .fromProject(this)
new ExecOperation() .command("scripts/cliargs.sh")
.fromProject(this) .execute();
.command("scripts/cliargs.sh")
.execute();
}
super.test(); super.test();
} }

View file

@ -1,5 +1,5 @@
/* /*
* Copyright 2023-2025 the original author or authors. * Copyright 2023-2024 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -24,8 +24,8 @@ import rife.bld.operations.exceptions.ExitStatusException;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Path;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.logging.Level; import java.util.logging.Level;
@ -48,14 +48,14 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
"kotlin-reflect-", "kotlin-reflect-",
"kotlin-script-runtime-", "kotlin-script-runtime-",
"kotlin-stdlib-", "kotlin-stdlib-",
"kotlinx-coroutines-", "kotlin-stdlib-jdk7-",
"kotlin-stdlib-jdk8-",
"kotlinx-html-jvm-", "kotlinx-html-jvm-",
"kotlinx-serialization-", "kotlinx-serialization-",
"poko-annotations-jvm-",
"sarif4k-jvm-", "sarif4k-jvm-",
"snakeyaml-engine-", "snakeyaml-engine-",
"trove4j-"); "trove4j-");
private static final Logger LOGGER = Logger.getLogger(DetektOperation.class.getName()); private static final Logger LOGGER = Logger.getLogger(Report.class.getName());
private final Collection<File> classpath_ = new ArrayList<>(); private final Collection<File> classpath_ = new ArrayList<>();
private final Collection<File> config_ = new ArrayList<>(); private final Collection<File> config_ = new ArrayList<>();
private final Collection<String> excludes_ = new ArrayList<>(); private final Collection<String> excludes_ = new ArrayList<>();
@ -128,28 +128,8 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
* @return this operation instance * @return this operation instance
*/ */
public DetektOperation basePath(File path) { public DetektOperation basePath(File path) {
return basePath(path.getAbsolutePath()); basePath_ = path.getAbsolutePath();
} return this;
/**
* Retrieves the base path.
*
* @return the directory path
*/
public String basePath() {
return basePath_;
}
/**
* Specifies a directory as the base path. Currently, it impacts all file
* paths in the formatted reports. File paths in console output and txt
* report are not affected and remain as absolute paths.
*
* @param path the directory path
* @return this operation instance
*/
public DetektOperation basePath(Path path) {
return basePath(path.toFile().getAbsolutePath());
} }
/** /**
@ -172,27 +152,8 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
* @return this operation instance * @return this operation instance
*/ */
public DetektOperation baseline(File baseline) { public DetektOperation baseline(File baseline) {
return baseline(baseline.getAbsolutePath()); baseline_ = baseline.getAbsolutePath();
} return this;
/**
* If a baseline xml file is passed in, only new code smells not in the
* baseline are printed in the console.
*
* @param baseline the baseline xml file
* @return this operation instance
*/
public DetektOperation baseline(Path baseline) {
return baseline(baseline.toFile().getAbsolutePath());
}
/**
* Retrieves the baseline xml file.
*
* @return the baseline xml file
*/
public String baseline() {
return baseline_;
} }
/** /**
@ -214,10 +175,10 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
* *
* @param paths one or more files * @param paths one or more files
* @return this operation instance * @return this operation instance
* @see #classPath(Collection)
*/ */
public DetektOperation classPath(File... paths) { public DetektOperation classPath(File... paths) {
return classPath(List.of(paths)); classpath_.addAll(List.of(paths));
return this;
} }
/** /**
@ -226,22 +187,10 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
* *
* @param paths one or more files * @param paths one or more files
* @return this operation instance * @return this operation instance
* @see #classPathPaths(Collection)
*/
public DetektOperation classPath(Path... paths) {
return classPathPaths(List.of(paths));
}
/**
* EXPERIMENTAL: Paths where to find user class files and jar dependencies.
* Used for type resolution.
*
* @param paths one or more files
* @return this operation instance
* @see #classPathStrings(Collection)
*/ */
public DetektOperation classPath(String... paths) { public DetektOperation classPath(String... paths) {
return classPathStrings(List.of(paths)); classpath_.addAll(Arrays.stream(paths).map(File::new).toList());
return this;
} }
@ -251,7 +200,6 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
* *
* @param paths the paths * @param paths the paths
* @return this operation instance * @return this operation instance
* @see #classPath(File...)
*/ */
public DetektOperation classPath(Collection<File> paths) { public DetektOperation classPath(Collection<File> paths) {
classpath_.addAll(paths); classpath_.addAll(paths);
@ -267,39 +215,15 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
return classpath_; return classpath_;
} }
/**
* EXPERIMENTAL: Paths where to find user class files and jar dependencies.
* Used for type resolution.
*
* @param paths the paths
* @return this operation instance
* @see #classPath(Path...)
*/
public DetektOperation classPathPaths(Collection<Path> paths) {
return classPath(paths.stream().map(Path::toFile).toList());
}
/**
* EXPERIMENTAL: Paths where to find user class files and jar dependencies.
* Used for type resolution.
*
* @param paths the paths
* @return this operation instance
* @see #classPath(String...)
*/
public DetektOperation classPathStrings(Collection<String> paths) {
return classPath(paths.stream().map(File::new).toList());
}
/** /**
* Paths to the config files ({@code path/to/config.yml}). * Paths to the config files ({@code path/to/config.yml}).
* *
* @param configs one or more config files * @param configs one or more config files
* @return this operation instance * @return this operation instance
* @see #config(Collection)
*/ */
public DetektOperation config(File... configs) { public DetektOperation config(File... configs) {
return config(List.of(configs)); config_.addAll(List.of(configs));
return this;
} }
/** /**
@ -307,21 +231,10 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
* *
* @param configs one or more config files * @param configs one or more config files
* @return this operation instance * @return this operation instance
* @see #configPaths(Collection)
*/
public DetektOperation config(Path... configs) {
return configPaths(List.of(configs));
}
/**
* Paths to the config files ({@code path/to/config.yml}).
*
* @param configs one or more config files
* @return this operation instance
* @see #configStrings(Collection)
*/ */
public DetektOperation config(String... configs) { public DetektOperation config(String... configs) {
return configStrings(List.of(configs)); config_.addAll(Arrays.stream(configs).map(File::new).toList());
return this;
} }
/** /**
@ -329,7 +242,6 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
* *
* @param configs the config files * @param configs the config files
* @return this operation instance * @return this operation instance
* @see #config(File...)
*/ */
public DetektOperation config(Collection<File> configs) { public DetektOperation config(Collection<File> configs) {
config_.addAll(configs); config_.addAll(configs);
@ -345,17 +257,6 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
return config_; return config_;
} }
/**
* Paths to the config files ({@code path/to/config.yml}).
*
* @param configs the config files
* @return this operation instance
* @see #config(Path...)
*/
public DetektOperation configPaths(Collection<Path> configs) {
return config(configs.stream().map(Path::toFile).toList());
}
/** /**
* Path to the config resource on detekt's classpath ({@code path/to/config.yml}). * Path to the config resource on detekt's classpath ({@code path/to/config.yml}).
* *
@ -374,37 +275,7 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
* @return this operation instance * @return this operation instance
*/ */
public DetektOperation configResource(File resource) { public DetektOperation configResource(File resource) {
return configResource(resource.getAbsolutePath()); configResource_ = resource.getAbsolutePath();
}
/**
* Path to the config resource on detekt's classpath ({@code path/to/config.yml}).
*
* @param resource the config resource path
* @return this operation instance
*/
public DetektOperation configResource(Path resource) {
return configResource(resource.toFile().getAbsolutePath());
}
/**
* Retrieves the path of the config resource.
*
* @return the config resource path
*/
public String configResource() {
return configResource_;
}
/**
* Paths to the config files ({@code path/to/config.yml}).
*
* @param configs the config files
* @return this operation instance
* @see #config(String...)
*/
public DetektOperation configStrings(Collection<String> configs) {
config_.addAll(configs.stream().map(File::new).toList());
return this; return this;
} }
@ -449,7 +320,8 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
* @return this operation instance * @return this operation instance
*/ */
public DetektOperation excludes(String... patterns) { public DetektOperation excludes(String... patterns) {
return excludes(List.of(patterns)); excludes_.addAll(List.of(patterns));
return this;
} }
/** /**
@ -488,7 +360,7 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
throw new ExitStatusException(ExitStatusException.EXIT_FAILURE); throw new ExitStatusException(ExitStatusException.EXIT_FAILURE);
} else { } else {
super.execute(); super.execute();
if (successful_ && LOGGER.isLoggable(Level.INFO) && !silent()) { if (successful_ && LOGGER.isLoggable(Level.INFO) && !silent()){
if (createBaseline_) { if (createBaseline_) {
LOGGER.info("Detekt baseline generated successfully: " LOGGER.info("Detekt baseline generated successfully: "
+ "file://" + new File(baseline_).toURI().getPath()); + "file://" + new File(baseline_).toURI().getPath());
@ -701,7 +573,7 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
} }
} }
} }
return String.join(File.pathSeparator, jars); return String.join(":", jars);
} }
/** /**
@ -712,7 +584,8 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
* @return this operation instance * @return this operation instance
*/ */
public DetektOperation includes(String... patterns) { public DetektOperation includes(String... patterns) {
return includes(List.of(patterns)); includes_.addAll(List.of(patterns));
return this;
} }
/** /**
@ -741,7 +614,6 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
* *
* @param paths the paths * @param paths the paths
* @return this operation instance * @return this operation instance
* @see #input(Collection)
*/ */
public DetektOperation input(Collection<File> paths) { public DetektOperation input(Collection<File> paths) {
input_.addAll(paths); input_.addAll(paths);
@ -753,10 +625,10 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
* *
* @param paths one or more paths * @param paths one or more paths
* @return this operation instance * @return this operation instance
* @see #inputStrings(Collection)
*/ */
public DetektOperation input(String... paths) { public DetektOperation input(String... paths) {
return inputStrings(List.of(paths)); input_.addAll(Arrays.stream(paths).map(File::new).toList());
return this;
} }
/** /**
@ -764,22 +636,12 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
* *
* @param paths one or more paths * @param paths one or more paths
* @return this operation instance * @return this operation instance
* @see #input(Collection)
*/ */
public DetektOperation input(File... paths) { public DetektOperation input(File... paths) {
return input(List.of(paths)); input_.addAll(List.of(paths));
return this;
} }
/**
* Input paths to analyze. If not specified the current working directory is used.
*
* @param paths one or more paths
* @return this operation instance
* @see #inputPaths(Collection)
*/
public DetektOperation input(Path... paths) {
return inputPaths(List.of(paths));
}
/** /**
* Returns the input paths to analyze. * Returns the input paths to analyze.
@ -790,28 +652,6 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
return input_; return input_;
} }
/**
* Input paths to analyze. If not specified the current working directory is used.
*
* @param paths the paths
* @return this operation instance
* @see #input(Path...)
*/
public DetektOperation inputPaths(Collection<Path> paths) {
return input(paths.stream().map(Path::toFile).toList());
}
/**
* Input paths to analyze. If not specified the current working directory is used.
*
* @param paths the paths
* @return this operation instance
* @see #input(String...)
*/
public DetektOperation inputStrings(Collection<String> paths) {
return input(paths.stream().map(File::new).toList());
}
/* /*
* Determines if a string is not blank. * Determines if a string is not blank.
*/ */
@ -889,10 +729,10 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
* *
* @param jars one or more jars * @param jars one or more jars
* @return this operation instance * @return this operation instance
* @see #pluginsStrings(Collection)
*/ */
public DetektOperation plugins(String... jars) { public DetektOperation plugins(String... jars) {
return pluginsStrings(List.of(jars)); plugins_.addAll(Arrays.stream(jars).map(File::new).toList());
return this;
} }
/** /**
@ -900,21 +740,10 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
* *
* @param jars one or more jars * @param jars one or more jars
* @return this operation instance * @return this operation instance
* @see #plugins(Collection)
*/ */
public DetektOperation plugins(File... jars) { public DetektOperation plugins(File... jars) {
return plugins(List.of(jars)); plugins_.addAll(List.of(jars));
} return this;
/**
* Extra paths to plugin jars.
*
* @param jars one or more jars
* @return this operation instance
* @see #pluginsPaths(Collection)
*/
public DetektOperation plugins(Path... jars) {
return pluginsPaths(List.of(jars));
} }
/** /**
@ -922,7 +751,6 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
* *
* @param jars the jars paths * @param jars the jars paths
* @return this operation instance * @return this operation instance
* @see #input(File...)
*/ */
public DetektOperation plugins(Collection<File> jars) { public DetektOperation plugins(Collection<File> jars) {
plugins_.addAll(jars); plugins_.addAll(jars);
@ -938,28 +766,6 @@ public class DetektOperation extends AbstractProcessOperation<DetektOperation> {
return plugins_; return plugins_;
} }
/**
* Extra paths to plugin jars.
*
* @param jars the jars paths
* @return this operation instance
* @see #plugins(Path...)
*/
public DetektOperation pluginsPaths(Collection<Path> jars) {
return plugins(jars.stream().map(Path::toFile).toList());
}
/**
* Extra paths to plugin jars.
*
* @param jars the jars paths
* @return this operation instance
* @see #plugins(String...)
*/
public DetektOperation pluginsStrings(Collection<String> jars) {
return plugins(jars.stream().map(File::new).toList());
}
/** /**
* Generates a report for given {@link ReportId report-id} and stores it on given 'path'. * Generates a report for given {@link ReportId report-id} and stores it on given 'path'.
* *

View file

@ -1,5 +1,5 @@
/* /*
* Copyright 2023-2025 the original author or authors. * Copyright 2023-2024 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View file

@ -1,5 +1,5 @@
/* /*
* Copyright 2023-2025 the original author or authors. * Copyright 2023-2024 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View file

@ -1,5 +1,5 @@
/* /*
* Copyright 2023-2025 the original author or authors. * Copyright 2023-2024 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -16,11 +16,8 @@
package rife.bld.extension; package rife.bld.extension;
import org.assertj.core.api.AutoCloseableSoftAssertions;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledOnOs;
import org.junit.jupiter.api.condition.OS;
import rife.bld.BaseProject; import rife.bld.BaseProject;
import rife.bld.blueprints.BaseProjectBlueprint; import rife.bld.blueprints.BaseProjectBlueprint;
import rife.bld.extension.detekt.Report; import rife.bld.extension.detekt.Report;
@ -64,37 +61,6 @@ class DetektOperationTest {
} }
@Test @Test
void testBasePath() {
var foo = new File("foo");
var bar = new File("bar");
var op = new DetektOperation().basePath(foo);
assertThat(op.basePath()).as("as file").isEqualTo(foo.getAbsolutePath());
op = op.basePath(bar.toPath());
assertThat(op.basePath()).as("as path").isEqualTo(bar.getAbsolutePath());
op = op.basePath("foo");
assertThat(op.basePath()).as("as string").isEqualTo("foo");
}
@Test
void testBaseline() {
var foo = new File("foo");
var bar = new File("bar");
var op = new DetektOperation().baseline(foo);
assertThat(op.baseline()).as("as file").isEqualTo(foo.getAbsolutePath());
op = op.baseline(bar.toPath());
assertThat(op.baseline()).as("as path").isEqualTo(bar.getAbsolutePath());
op = op.baseline("foo");
assertThat(op.baseline()).as("as string").isEqualTo("foo");
}
@Test
@EnabledOnOs(OS.LINUX)
@SuppressWarnings("PMD.AvoidInstantiatingObjectsInLoops") @SuppressWarnings("PMD.AvoidInstantiatingObjectsInLoops")
void testCheckAllParameters() throws IOException { void testCheckAllParameters() throws IOException {
var args = Files.readAllLines(Paths.get("src", "test", "resources", "detekt-args.txt")); var args = Files.readAllLines(Paths.get("src", "test", "resources", "detekt-args.txt"));
@ -151,104 +117,27 @@ class DetektOperationTest {
var params = op.executeConstructProcessCommandList(); var params = op.executeConstructProcessCommandList();
try (var softly = new AutoCloseableSoftAssertions()) { for (var p : args) {
for (var p : args) { var found = false;
var found = false; for (var a : params) {
for (var a : params) { if (a.startsWith(p)) {
if (a.startsWith(p)) { found = true;
found = true; break;
break;
}
} }
softly.assertThat(found).as(p + " not found.").isTrue();
} }
assertThat(found).as(p + " not found.").isTrue();
} }
} }
@Test
void testClassPath() {
var foo = new File("foo");
var bar = new File("bar");
var op = new DetektOperation().classPath("foo", "bar");
assertThat(op.classPath()).as("String...").contains(foo, bar);
op.classPath().clear();
op = op.classPath(foo, bar);
assertThat(op.classPath()).as("File...").contains(foo, bar);
op.classPath().clear();
op = op.classPath(foo.toPath(), bar.toPath());
assertThat(op.classPath()).as("Path...").contains(foo, bar);
op.classPath().clear();
op = op.classPathStrings(List.of("foo", "bar"));
assertThat(op.classPath()).as("List(String...)").contains(foo, bar);
op.classPath().clear();
op = op.classPath(List.of(foo, bar));
assertThat(op.classPath()).as("File...").contains(foo, bar);
op.classPath().clear();
op = op.classPathPaths(List.of(foo.toPath(), bar.toPath()));
assertThat(op.classPath()).as("Path...").contains(foo, bar);
op.classPath().clear();
}
@Test
void testConfig() {
var foo = new File("foo");
var bar = new File("bar");
var op = new DetektOperation().config("foo", "bar");
assertThat(op.config()).as("String...").contains(foo, bar);
op.config().clear();
op = op.config(foo, bar);
assertThat(op.config()).as("File...").contains(foo, bar);
op.config().clear();
op = op.config(foo.toPath(), bar.toPath());
assertThat(op.config()).as("Path...").contains(foo, bar);
op.config().clear();
op = op.configStrings(List.of("foo", "bar"));
assertThat(op.config()).as("List(String...)").contains(foo, bar);
op.config().clear();
op = op.config(List.of(foo, bar));
assertThat(op.config()).as("File...").contains(foo, bar);
op.config().clear();
op = op.configPaths(List.of(foo.toPath(), bar.toPath()));
assertThat(op.config()).as("Path...").contains(foo, bar);
op.config().clear();
}
@Test
void testConfigResource() {
var foo = new File("foo");
var bar = new File("bar");
var op = new DetektOperation().configResource(foo);
assertThat(op.configResource()).as("as file").isEqualTo(foo.getAbsolutePath());
op = op.configResource(bar.toPath());
assertThat(op.configResource()).as("as path").isEqualTo(bar.getAbsolutePath());
op = new DetektOperation().configResource("foo");
assertThat(op.configResource()).as("as string").isEqualTo("foo");
}
@Test @Test
void testExampleBaseline() throws IOException, ExitStatusException, InterruptedException { void testExampleBaseline() throws IOException, ExitStatusException, InterruptedException {
var tmpDir = Files.createTempDirectory("bld-detekt-").toFile(); var tmpDir = Files.createTempDirectory("bld-detekt-").toFile();
var baseline = new File(tmpDir, "examples/src/test/resources/detekt-baseline.xml"); var baseline = new File(tmpDir, "detekt-baseline.xml");
var op = new DetektOperation() var op = new DetektOperation()
.fromProject(new BaseProjectBlueprint(new File("examples"), "com.example", .fromProject(new BaseProjectBlueprint(new File("examples"), "com.example",
"example", "Example")) "Example"))
.baseline(baseline) .baseline(baseline)
.createBaseline(true); .createBaseline(true);
op.execute(); op.execute();
@ -263,7 +152,7 @@ class DetektOperationTest {
void testExampleMaxIssues() { void testExampleMaxIssues() {
var op = new DetektOperation() var op = new DetektOperation()
.fromProject(new BaseProjectBlueprint(new File("examples"), "com.example", .fromProject(new BaseProjectBlueprint(new File("examples"), "com.example",
"example", "Example")) "Example"))
.maxIssues(8); .maxIssues(8);
assertThatNoException().isThrownBy(op::execute); assertThatNoException().isThrownBy(op::execute);
} }
@ -280,7 +169,7 @@ class DetektOperationTest {
var op = new DetektOperation() var op = new DetektOperation()
.fromProject(new BaseProjectBlueprint(new File("examples"), "com.example", .fromProject(new BaseProjectBlueprint(new File("examples"), "com.example",
"example", "Example")) "Example"))
.report(new Report(ReportId.HTML, html.getAbsolutePath())) .report(new Report(ReportId.HTML, html.getAbsolutePath()))
.report(new Report(ReportId.XML, xml.getAbsolutePath())) .report(new Report(ReportId.XML, xml.getAbsolutePath()))
.report(new Report(ReportId.TXT, txt.getAbsolutePath())) .report(new Report(ReportId.TXT, txt.getAbsolutePath()))
@ -298,7 +187,7 @@ class DetektOperationTest {
void testExamplesExecute() { void testExamplesExecute() {
var op = new DetektOperation() var op = new DetektOperation()
.fromProject(new BaseProjectBlueprint(new File("examples"), "com.example", .fromProject(new BaseProjectBlueprint(new File("examples"), "com.example",
"example", "Example")) "Example"))
.debug(true); .debug(true);
assertThatThrownBy(op::execute).isInstanceOf(ExitStatusException.class); assertThatThrownBy(op::execute).isInstanceOf(ExitStatusException.class);
} }
@ -308,64 +197,4 @@ class DetektOperationTest {
var op = new DetektOperation(); var op = new DetektOperation();
assertThatCode(op::execute).isInstanceOf(ExitStatusException.class); assertThatCode(op::execute).isInstanceOf(ExitStatusException.class);
} }
@Test
void testInput() {
var foo = new File("foo");
var bar = new File("bar");
var op = new DetektOperation().input("foo", "bar");
assertThat(op.input()).as("String...").contains(foo, bar);
op.input().clear();
op = op.input(foo, bar);
assertThat(op.input()).as("File...").contains(foo, bar);
op.input().clear();
op = op.input(foo.toPath(), bar.toPath());
assertThat(op.input()).as("Path...").contains(foo, bar);
op.input().clear();
op = op.inputStrings(List.of("foo", "bar"));
assertThat(op.input()).as("List(String...)").contains(foo, bar);
op.input().clear();
op = op.input(List.of(foo, bar));
assertThat(op.input()).as("File...").contains(foo, bar);
op.input().clear();
op = op.inputPaths(List.of(foo.toPath(), bar.toPath()));
assertThat(op.input()).as("Path...").contains(foo, bar);
op.input().clear();
}
@Test
void testPlugins() {
var foo = new File("foo");
var bar = new File("bar");
var op = new DetektOperation().plugins("foo", "bar");
assertThat(op.plugins()).as("String...").contains(foo, bar);
op.plugins().clear();
op = op.plugins(foo, bar);
assertThat(op.plugins()).as("File...").contains(foo, bar);
op.plugins().clear();
op = op.plugins(foo.toPath(), bar.toPath());
assertThat(op.plugins()).as("Path...").contains(foo, bar);
op.plugins().clear();
op = op.pluginsStrings(List.of("foo", "bar"));
assertThat(op.plugins()).as("List(String...)").contains(foo, bar);
op.plugins().clear();
op = op.plugins(List.of(foo, bar));
assertThat(op.plugins()).as("File...").contains(foo, bar);
op.plugins().clear();
op = op.pluginsPaths(List.of(foo.toPath(), bar.toPath()));
assertThat(op.plugins()).as("Path...").contains(foo, bar);
op.plugins().clear();
}
} }