Docs & Rules

mkutz/ApproveJGitHubLast refreshed Oct 3, 2026

This is a public, read-only report. Striff reads this repository's docs, turns each sentence that makes a claim about the code into a rule, and checks the rule against the code on the default branch. How this works

1 name in these docs no longer matches the code.

main7a37be5listed 49 min ago

Is this yours? Install to manage it

Once installed, Striff checks every pull request.

29
25
25
25
25
25
1
5
5
1 stale5
2
3
2
1
1
4
25 docs, listed Oct 3
mkutz/ApproveJOpen repository

Names these docs write that the code no longer has1

Each sentence below names a type the default branch doesn't declare, or declares somewhere else. Edit the doc so it matches the code, or bring the type back.

  • GonePathProviderBuilder
    You can make this explicit by using the link:{javadoc-url}/core/org/approvej/approve/PathProviderBuilder.html#nextToTest()[PathProviderBuilder.nextToTest()] method.

    The repository once held modules/core/src/main/java/org/approvej/approve/PathProviderBuilder.java. It doesn't now. Closest name there: PathProvider.

    View on GitHub

mkutz/ApproveJ — documented rules

29 of 29 rules, printed October 3, 2026.

The sentence in your docs
Read Oct 3
ApprovalBuilder.approve(value) with fluent methods .printedAs(), .scrubbedOf(), .byFile().
ApprovalBuilder has an approve method
Holds
Read Oct 3
ApprovalBuilder.approve(value) with fluent methods .printedAs(), .scrubbedOf(), .byFile().
ApprovalBuilder has a printedAs method
Holds
Read Oct 3
ApprovalBuilder.approve(value) with fluent methods .printedAs(), .scrubbedOf(), .byFile().
ApprovalBuilder has a scrubbedOf method
Holds
Read Oct 3
ApprovalBuilder.approve(value) with fluent methods .printedAs(), .scrubbedOf(), .byFile().
ApprovalBuilder has a byFile method
Holds
Read Oct 3
The general entry point to start an approval is the static initializer approve of the link:{javadoc-url}/core/org/approvej/ApprovalBuilder.html[ApprovalBuilder].
ApprovalBuilder has approve
Holds
Read Oct 3
For individual overrides, you can use the link:{javadoc-url}/core/org/approvej/ApprovalBuilder.html#printedAs(org.approvej.print.PrintFormat)[printedAs method] with a link:{javadoc-url}/core/org/approvej/print/PrintFormat.html[PrintFormat], or the link:{javadoc-url}/core/org/approvej/ApprovalBuilder.html#printedBy(java.util.function.Function)[printedBy method] with a Function<T, String>.
ApprovalBuilder has a printedAs method
Holds
Read Oct 3
For individual overrides, you can use the link:{javadoc-url}/core/org/approvej/ApprovalBuilder.html#printedAs(org.approvej.print.PrintFormat)[printedAs method] with a link:{javadoc-url}/core/org/approvej/print/PrintFormat.html[PrintFormat], or the link:{javadoc-url}/core/org/approvej/ApprovalBuilder.html#printedBy(java.util.function.Function)[printedBy method] with a Function<T, String>.
ApprovalBuilder has a printedBy method
Holds
Read Oct 3
For individual overrides, you can use the link:{javadoc-url}/core/org/approvej/ApprovalBuilder.html#printedAs(org.approvej.print.PrintFormat)[printedAs method] with a link:{javadoc-url}/core/org/approvej/print/PrintFormat.html[PrintFormat], or the link:{javadoc-url}/core/org/approvej/ApprovalBuilder.html#printedBy(java.util.function.Function)[printedBy method] with a Function<T, String>.
ApprovalBuilder depends on PrintFormat
Holds
Read Oct 3
For individual overrides, you can use the link:{javadoc-url}/core/org/approvej/ApprovalBuilder.html#printedAs(org.approvej.print.PrintFormat)[printedAs method] with a link:{javadoc-url}/core/org/approvej/print/PrintFormat.html[PrintFormat], or the link:{javadoc-url}/core/org/approvej/ApprovalBuilder.html#printedBy(java.util.function.Function)[printedBy method] with a Function<T, String>.
ApprovalBuilder uses java.util.function.Function
Holds
Read Oct 3
This will allow you to also override the filenameExtension method.
PrintFormat has a filenameExtension method
Holds
Read Oct 3
You can do this by using the scrubbedOf method of the link:{javadoc-url}/core/org/approvej/ApprovalBuilder.html[ApprovalBuilder] and provide a link:{javadoc-url}/core/org/approvej/scrub/Scrubber.html[Scrubber]/UnaryOperator<T> implementation.
ApprovalBuilder has a scrubbedOf method
Holds
Read Oct 3
Call printed() to apply the <<default_print_format,configured default print format>>, or use printedAs()/printedBy() to choose one explicitly.
ApprovalBuilder has a printed method
Holds
Read Oct 3
In the following example, the two dynamic properties are scrubbed with the built-in Scrubbers for link:{javadoc-url}/core/org/approvej/scrub/Scrubbers.html#dateTimeFormat(java.lang.String)[dateTimeFormat] and link:{javadoc-url}/core/org/approvej/scrub/Scrubbers.html#uuids()[uuids].
Scrubbers has a dateTimeFormat method
Holds
Read Oct 3
In the following example, the two dynamic properties are scrubbed with the built-in Scrubbers for link:{javadoc-url}/core/org/approvej/scrub/Scrubbers.html#dateTimeFormat(java.lang.String)[dateTimeFormat] and link:{javadoc-url}/core/org/approvej/scrub/Scrubbers.html#uuids()[uuids].
Scrubbers has an uuids method
Holds
Read Oct 3
You can change this behavior by calling the replacement method on a scrubber to choose a different link:{javadoc-url}/core/org/approvej/scrub/Replacement.html[Replacement] function.
Scrubber has a replacement method
Holds
Read Oct 3
You conclude the link:{javadoc-url}/core/org/approvej/ApprovalBuilder.html[ApprovalBuilder] by specifying by which link:{javadoc-url}/core/org/approvej/approve/Approver.html[Approver] the received value should be approved.
ApprovalBuilder depends on Approver
Holds
Read Oct 3
The link:{javadoc-url}/core/org/approvej/ApprovalBuilder.html#byValue(java.lang.String)[ApprovalBuilder.byValue()] method will use an link:{javadoc-url}/core/org/approvej/approve/InplaceApprover.html[InplaceApprover] to approve the received value by comparison with a directly provided previously approved value.
ApprovalBuilder has a byValue method
Holds
Read Oct 3
The link:{javadoc-url}/core/org/approvej/ApprovalBuilder.html#byFile()[ApprovalBuilder.byFile()] method will use a link:{javadoc-url}/core/org/approvej/approve/FileApprover.html[FileApprover] to approve the received value by comparison with a previously approved value stored in a file.
ApprovalBuilder has a byFile method
Holds
Read Oct 3
You can also define your own link:{javadoc-url}/core/org/approvej/approve/PathProvider.html[PathProvider] and pass it to the link:{javadoc-url}/core/org/approvej/ApprovalBuilder.html#byFile(org.approvej.approve.PathProvider)[byFile] method.
ApprovalBuilder depends on PathProvider
Holds
Read Oct 3
If you call approve() without a concluding terminal method (by(), byFile(), or byValue()), the test will silently pass without any approval actually happening.
ApprovalBuilder has a by method
Holds
Read Oct 3
You can do so by calling the reviewedBy method on the link:{javadoc-url}/core/org/approvej/ApprovalBuilder.html[ApprovalBuilder].
ApprovalBuilder has a reviewedBy method
Holds
Read Oct 3
In that case, you can use the link:{javadoc-url}/core/org/approvej/review/Reviewers.html#automatic()[automatic] link:{javadoc-url}/core/org/approvej/review/Reviewer.html[Reviewer].
Reviewers has an automatic method
Holds
Read Oct 3
The link:{javadoc-url}/http/org/approvej/http/HttpScrubbers.html[HttpScrubbers] utility provides scrubbers for these common cases: hostHeaderValue() – Scrubs the Host header (varies by port)
HttpScrubbers has a hostHeaderValue method
Holds
Read Oct 3
userAgentHeaderValue() – Scrubs the User-agent header (varies by JVM version)
HttpScrubbers has an userAgentHeaderValue method
Holds
Read Oct 3
headerValue(name) – Scrubs any header by name
HttpScrubbers has a headerValue method
Holds
Read Oct 3
For the most common case -- scrubbing strings -- you can implement link:{javadoc-url}/core/org/approvej/scrub/StringScrubber.html[StringScrubber], which binds all three parameters to Scrubber<StringScrubber, String, String>.
StringScrubber depends on Scrubber
Holds
Read Oct 3
StringScrubber replacement(Replacement<String> replacement) -- return a copy with a different replacement strategy
StringScrubber has a replacement method
Holds
Read Oct 3
columnValue(name) -- Scrubs all values in the named column (case-insensitive)
DatabaseScrubbers has a columnValue method
Holds
Read Oct 3
To approve an image, use the approveImage static method from ImageApprovalBuilder.
ImageApprovalBuilder has an approveImage method
Holds
29 rules from 10 docs

See these where the change is. The browser extension puts a pull request's doc findings, and a diagram of what it changed, on the GitHub page itself, so the code and what your docs say about it are side by side.