Skip to content
Merged
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
61 changes: 36 additions & 25 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,40 @@ jobs:
-Dcentral.skipPublishing=true
-pl .,cli,maven-plugin -am deploy

- name: Create GitHub release draft
env:
GH_TOKEN: ${{ github.token }}
shell: bash
run: |
version="${GITHUB_REF_NAME#v}"
awk -v version="${version}" '
$1 == "##" && $2 == version {
found = 1
}
found {
if ($1 == "##" && $2 != version) {
exit
}
print
}
END {
if (!found) {
exit 1
}
}
' CHANGELOG.md > release-notes.md
test -s release-notes.md
if gh release view "${GITHUB_REF_NAME}" >/dev/null 2>&1; then
is_draft="$(gh release view "${GITHUB_REF_NAME}" --json isDraft --jq .isDraft)"
if [ "${is_draft}" != "true" ]; then
echo "GitHub release ${GITHUB_REF_NAME} already exists and is not a draft." >&2
exit 1
fi
gh release edit "${GITHUB_REF_NAME}" --title "${GITHUB_REF_NAME}" --notes-file release-notes.md --draft
else
gh release create "${GITHUB_REF_NAME}" --verify-tag --draft --title "${GITHUB_REF_NAME}" --notes-file release-notes.md
fi

- name: Publish Maven artifacts
env:
MAVEN_CENTRAL_TOKEN_USERNAME: ${{ secrets.MAVEN_CENTRAL_TOKEN_USERNAME }}
Expand Down Expand Up @@ -90,34 +124,11 @@ jobs:
working-directory: gradle-plugin
run: ./gradlew publishPlugins -Pgradle.publish.key="${GRADLE_PUBLISH_KEY}" -Pgradle.publish.secret="${GRADLE_PUBLISH_SECRET}"

- name: Create GitHub release
- name: Publish GitHub release
env:
GH_TOKEN: ${{ github.token }}
shell: bash
run: |
version="${GITHUB_REF_NAME#v}"
awk -v version="${version}" '
$1 == "##" && $2 == version {
found = 1
}
found {
if ($1 == "##" && $2 != version) {
exit
}
print
}
END {
if (!found) {
exit 1
}
}
' CHANGELOG.md > release-notes.md
test -s release-notes.md
if gh release view "${GITHUB_REF_NAME}" >/dev/null 2>&1; then
gh release edit "${GITHUB_REF_NAME}" --title "${GITHUB_REF_NAME}" --notes-file release-notes.md
else
gh release create "${GITHUB_REF_NAME}" --title "${GITHUB_REF_NAME}" --notes-file release-notes.md
fi
run: gh release edit "${GITHUB_REF_NAME}" --draft=false --latest

- name: Clean up imported GPG home
if: always()
Expand Down
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,22 @@

## Unreleased

## 0.6.1 - 2026-06-01

### Fixed

- Stopped lambda-body decision nodes from inflating the enclosing source method's complexity and ignored javac synthetic lambda coverage methods during attribution.
- Treated ambiguous same-line overload coverage collisions as unavailable instead of assigning coverage to the wrong source method.

### Changed

- Documented the current anonymous-class scope explicitly: anonymous-class methods are not reported as first-class rows and their body complexity is not folded into the enclosing method.
- Expanded CI with granular NullAway and SpotBugs gates across modules, plus release-preflight cache priming for SpotBugs.

### Dependencies

- Updated compatible Java test and analysis tooling while keeping the JUnit version aligned with current CI compatibility.

## 0.6.0 - 2026-05-24

### Added
Expand Down
64 changes: 32 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ mvn -B -pl cli -am -DskipTests package
From the project root you want to analyze:

```bash
java -jar cli/target/crap-java-cli-0.6.0.jar
java -jar cli/target/crap-java-cli-0.6.1.jar
```

## CLI
Expand Down Expand Up @@ -163,27 +163,27 @@ Value-taking long options may also be written with inline assignment, such as
Examples:

```bash
java -jar cli/target/crap-java-cli-0.6.0.jar --help
java -jar cli/target/crap-java-cli-0.6.0.jar
java -jar cli/target/crap-java-cli-0.6.0.jar --changed
java -jar cli/target/crap-java-cli-0.6.0.jar --build-tool gradle
java -jar cli/target/crap-java-cli-0.6.0.jar --build-tool=maven
java -jar cli/target/crap-java-cli-0.6.0.jar --format json
java -jar cli/target/crap-java-cli-0.6.0.jar --format none --junit-report target/crap-java/TEST-crap-java.xml
java -jar cli/target/crap-java-cli-0.6.0.jar --format json --output target/crap-java/report.json
java -jar cli/target/crap-java-cli-0.6.0.jar --failures-only=false --format json
java -jar cli/target/crap-java-cli-0.6.0.jar --omit-redundancy=false --format json
java -jar cli/target/crap-java-cli-0.6.0.jar --agent
java -jar cli/target/crap-java-cli-0.6.0.jar --agent --format junit --output target/crap-java/TEST-crap-java-primary.xml
java -jar cli/target/crap-java-cli-0.6.0.jar --junit-report target/crap-java/TEST-crap-java.xml
java -jar cli/target/crap-java-cli-0.6.0.jar --threshold 6
java -jar cli/target/crap-java-cli-0.6.0.jar --threshold=6
java -jar cli/target/crap-java-cli-0.6.0.jar --exclude 'module-a/**' --exclude-class '.*MapperImpl$'
java -jar cli/target/crap-java-cli-0.6.0.jar --exclude='module-a/**' --exclude-class='.*MapperImpl$'
java -jar cli/target/crap-java-cli-0.6.0.jar --source-root src/java --source-root src/main/java17
java -jar cli/target/crap-java-cli-0.6.0.jar --build-tool maven module-a/src/main/java/demo/Sample.java
java -jar cli/target/crap-java-cli-0.6.0.jar src/main/java/demo/Sample.java
java -jar cli/target/crap-java-cli-0.6.0.jar module-a module-b
java -jar cli/target/crap-java-cli-0.6.1.jar --help
java -jar cli/target/crap-java-cli-0.6.1.jar
java -jar cli/target/crap-java-cli-0.6.1.jar --changed
java -jar cli/target/crap-java-cli-0.6.1.jar --build-tool gradle
java -jar cli/target/crap-java-cli-0.6.1.jar --build-tool=maven
java -jar cli/target/crap-java-cli-0.6.1.jar --format json
java -jar cli/target/crap-java-cli-0.6.1.jar --format none --junit-report target/crap-java/TEST-crap-java.xml
java -jar cli/target/crap-java-cli-0.6.1.jar --format json --output target/crap-java/report.json
java -jar cli/target/crap-java-cli-0.6.1.jar --failures-only=false --format json
java -jar cli/target/crap-java-cli-0.6.1.jar --omit-redundancy=false --format json
java -jar cli/target/crap-java-cli-0.6.1.jar --agent
java -jar cli/target/crap-java-cli-0.6.1.jar --agent --format junit --output target/crap-java/TEST-crap-java-primary.xml
java -jar cli/target/crap-java-cli-0.6.1.jar --junit-report target/crap-java/TEST-crap-java.xml
java -jar cli/target/crap-java-cli-0.6.1.jar --threshold 6
java -jar cli/target/crap-java-cli-0.6.1.jar --threshold=6
java -jar cli/target/crap-java-cli-0.6.1.jar --exclude 'module-a/**' --exclude-class '.*MapperImpl$'
java -jar cli/target/crap-java-cli-0.6.1.jar --exclude='module-a/**' --exclude-class='.*MapperImpl$'
java -jar cli/target/crap-java-cli-0.6.1.jar --source-root src/java --source-root src/main/java17
java -jar cli/target/crap-java-cli-0.6.1.jar --build-tool maven module-a/src/main/java/demo/Sample.java
java -jar cli/target/crap-java-cli-0.6.1.jar src/main/java/demo/Sample.java
java -jar cli/target/crap-java-cli-0.6.1.jar module-a module-b
```

The CLI writes only the requested primary report format to stdout unless
Expand Down Expand Up @@ -244,20 +244,20 @@ rely on properties.

## Distribution

The current `0.6.0` release ships through Maven Central, with the Gradle Plugin Portal as the primary Gradle plugin channel:
The current `0.6.1` release ships through Maven Central, with the Gradle Plugin Portal as the primary Gradle plugin channel:

- `media.barney:crap-java-core:0.6.0`
- `media.barney:crap-java-cli:0.6.0`
- `media.barney:crap-java-maven-plugin:0.6.0`
- Gradle plugin id `media.barney.crap-java` version `0.6.0`
- `media.barney:crap-java-core:0.6.1`
- `media.barney:crap-java-cli:0.6.1`
- `media.barney:crap-java-maven-plugin:0.6.1`
- Gradle plugin id `media.barney.crap-java` version `0.6.1`

### Gradle Plugin Portal

Apply the plugin in `build.gradle(.kts)`:

```kotlin
plugins {
id("media.barney.crap-java") version "0.6.0"
id("media.barney.crap-java") version "0.6.1"
}
```

Expand Down Expand Up @@ -313,14 +313,14 @@ Then apply the same plugin id in `build.gradle(.kts)`:

```kotlin
plugins {
id("media.barney.crap-java") version "0.6.0"
id("media.barney.crap-java") version "0.6.1"
}
```

The marker publication lives at
`media.barney.crap-java:media.barney.crap-java.gradle.plugin:0.6.0` and
`media.barney.crap-java:media.barney.crap-java.gradle.plugin:0.6.1` and
resolves to the implementation artifact
`media.barney:crap-java-gradle-plugin:0.6.0`.
`media.barney:crap-java-gradle-plugin:0.6.1`.

### Maven Central

Expand Down Expand Up @@ -351,7 +351,7 @@ Add the plugin:
<plugin>
<groupId>media.barney</groupId>
<artifactId>crap-java-maven-plugin</artifactId>
<version>0.6.0</version>
<version>0.6.1</version>
<executions>
<execution>
<goals>
Expand Down
2 changes: 1 addition & 1 deletion cli/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>media.barney</groupId>
<artifactId>crap-java-parent</artifactId>
<version>0.6.0</version>
<version>0.6.1</version>
</parent>

<artifactId>crap-java-cli</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>media.barney</groupId>
<artifactId>crap-java-parent</artifactId>
<version>0.6.0</version>
<version>0.6.1</version>
</parent>

<artifactId>crap-java-core</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion gradle-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ plugins {
}

group = "media.barney"
version = "0.6.0"
version = "0.6.1"

repositories {
mavenCentral()
Expand Down
2 changes: 1 addition & 1 deletion gradle-plugin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>media.barney</groupId>
<artifactId>crap-java-parent</artifactId>
<version>0.6.0</version>
<version>0.6.1</version>
</parent>

<packaging>pom</packaging>
Expand Down
2 changes: 1 addition & 1 deletion maven-plugin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>media.barney</groupId>
<artifactId>crap-java-parent</artifactId>
<version>0.6.0</version>
<version>0.6.1</version>
</parent>

<packaging>maven-plugin</packaging>
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>media.barney</groupId>
<artifactId>crap-java-parent</artifactId>
<version>0.6.0</version>
<version>0.6.1</version>
<packaging>pom</packaging>

<name>crap-java Parent</name>
Expand Down