We use semantic versioning:
- MAJOR version when you make incompatible API changes,
- MINOR version when you add functionality in a backwards-compatible manner, and
- PATCH version when you make backwards compatible bug fixes.
- [fix] agent: Warning about multiple agents being present is misleading
- [fix] agent:
search-git-properties-recursively
was not considered when jar was given viaartifactory-git-properties-jar
- [deprecation] agent:
artifactory-git-properties-jar
is deprecated now. Replace the option withgit-properties-jar
. The old option still works but is an alias now forgit-properties-jar
. - [feature] agent: Added
git-properties-commit-date-format
(replacesartifactory-git-properties-commit-date-format
), which now also can be used in non-artifactory cases. - [fix] agent:
search-git-properties-recursively
did only consider nested jar files, but nowar
,ear
,aar
- [fix] agent: Loading a profiler configuration from Teamscale was not possible if the potentially necessary proxy settings were not set yet.
- [feature] agent: New options
proxy-http(s)-host
/-port
/-user
/-password
allow user to specify teamscale-specific proxy settings. - [fix] teamscale-maven-plugin: NPE when no commit, nor revision was configured
- [fix] teamscale-maven-plugin: Fixed commit was ignored in commit resolution
- [feature] agent: Prevent uploading coverage to the same project + revision or branch@timestamp when doing multi project upload via git.properties
- [fix] impacted-test-engine: Remove duplicated slashes in uniform paths and cluster ids for Cucumber Tests
- [fix] impacted-test-engine: Ensure that the config file specified via
java.util.logging.config.file
is used when specified
- [fix] agent: Error was reported when the system under test used logback
- [fix] teamscale-gradle-plugin: Improved error message regarding minimum supported Gradle version
- [breaking] teamscale-client, teamscale-maven-plugin, teamscale-gradle-plugin: Support using revision for fetching impacted tests for both the baseline and the endCommit. This change is breaking because this changes the minimum required Teamscale Server version from 8.0.0 to 9.4.0 and because the Teamscale client API was changed. For the Maven and Gradle plugins, this change is non-breaking.
- [breaking] teamscale-client, teamscale-maven-plugin, teamscale-gradle-plugin, teamscale-jacoco-agent: New parameter:
teamscale-repository
(agent),repository
(Teamscale Client, Gradle and Maven Plugins). This parameter can be used to specify in which repository Teamscale should look up revisions in case there is more than one repository in a given Teamscale project. If no repository is given, Teamscale will look in all connected repositories. This change is breaking because the Teamscale client API was changed. For the JaCoCo agent and the Maven and Gradle plugins, this change is non-breaking. - [breaking] tia-maven-plugin: The
endCommit
option was renamed tocommit
in order to make it more understandable when using the upload task - [breaking] agent: removed currently unused
test-env
option. Use one of the other testwise coverage modes instead, please.
- [fix] agent: Coverage for Kotlin code did sometimes produce incorrect line numbers
- Re-release of 33.3.1
- [fix] agent: Dump coverage when profiler settings are changed via the API.
- [fix] agent: NullPointerException when agent jar was located in the file system root.
- [fix] installer: Did not support SSL certificates that use elliptic curve ciphers.
- [feature] agent: Support overwriting the git commit inside
git.properties
files withteamscale.commit.branch
andteamscale.commit.time
(see docs) - [fix] agent: New default date format of the git-commit-id-maven-plugin could not be parsed (see GitHub Issue)
- [fix] Gradle Plugin: Testwise Coverage reports did override each other when multiple modules upload to the same partition
- [feature] agent: Add support for git.properties in Spring Boot 3.2
- [feature] agent: Read configuration file path from
TEAMSCALE_JAVA_PROFILER_CONFIG_FILE
environment variable - [feature] add installer for Windows
- [feature] Docker: agent copies itself to
/transfer
if this is mounted into the container - [fix] agent: Disable warning about proxy port not being correct when no proxy port was set at all
- [fix] agent:
GET /commit
andGET /revision
endpoints did return 500 error - [feature] agent: Added stable support for Java 22 and experimental support for Java 23
- [fix] teamscale-maven-plugin: Revision and end commit could not be set via command line (user property)
- [fix] agent: NPE during agent startup probably due to missing read permissions in a shared folder
- [feature] teamscale-maven-plugin: Add new execution goal to batch convert .exec files into testwise coverage report.
- [feature] agent: Extended list of packages excluded by default
- [maintenance] agent: Removed HTTP upload (i.e.
upload-url
option) - [feature] agent: New option
proxy-password-file
allows users to provide a file containing a proxy password
- [feature] add installer for system-wide installation (see agent/MIGRATION.md for a migration guide)
- [feature] allow specifying configuration ID from Teamscale via environment variable
TEAMSCALE_JAVA_PROFILER_CONFIG_ID
- [breaking change] default log and coverage file directory changed to
/tmp
which works in more situations - [feature] agent: Added
config-id
option to allow retrieving the agent configuration from Teamscale.
- Re-Release 32.6.2
- Re-Release 32.6.1
- [fix] teamscale-maven-plugin Test names containing slashes could not be uploaded
- [fix] tia-client Impacted test retrieval failed due to JSON parsing error
- [fix] teamscale-maven-plugin Test names containing slashes could not be uploaded
- [fix] tia-client Impacted test retrieval failed due to JSON parsing error
- [feature] Profiler logs its version on startup
- [fix] agent: The agent crashed while starting on some machines with "cannot construct instances of" errors
- [feature] teamscale-maven-plugin: Added the
upload-coverage
goal which automatically uploads JaCoCo reports to Teamscale.
- [fix] agent: The agent crashed while starting on some machines with "cannot construct instances of" errors
- [fix] agent: The agent crashed while starting on some machines with "cannot construct instances of" errors
- [feature] agent: Added stable support for Java 21 and experimental support for Java 22
- [fix] agent: Produce more helpful error results in case a service call to Teamscale fails while handling an HTTP call
- [fix] teamscale-maven-plugin: The same uniform paths were extracted for tests that have the same name in a Cucumber feature file
- Re-release because of failing publishing process
-
- impacted-test-engine: Failed requests to Teamscale did result in unreadable error message
- [feature] teamscale-maven-plugin: Automatically find open port for coverage collection.
- [fix] teamscale-maven-plugin: Same uniform path was extracted for Cucumber scenario outlines which do not have their parameters in the title
- impacted-test-engine: Failed requests to Teamscale did result in unreadable error message
- [feature] teamscale-maven-plugin: Automatically find open port for coverage collection.
- [fix] teamscale-maven-plugin: Same uniform path was extracted for Cucumber scenario outlines which do not have their parameters in the title
- [feature] agent: Previously unsuccessful coverage uploads are now automatically retried upon agent restart
- [fix] teamscale-maven-plugin: Fix uniform path and cluster ID extraction for cucumber pre 7.11.2
- [feature] teamscale-maven-plugin: Support for cucumber tests
- [feature] teamscale-maven-plugin, impacted-test-engine: Support for junit platform suite tests
- [breaking] teamscale-gradle-plugin: Removed usage of deprecated Gradle APIs
teamscale.agent.destinationProperty
type has changed fromProperty<File>
toDirectoryProperty
teamscale.agent.setDestination(destination)
parameter type has changed fromProperty<File>
toProvider<Directory>
- [fix] agent: Discovery of unsupported class file versions will no longer lead to a crash, but will be logged instead
- [breaking] tia-runlisteners: Requires JUnit 5.10.0 now
- [feature] agent: Added support for Java 19, 20 and experimental support for 21
- [fix] agent: Attaching the agent in testwise mode to a JBoss Wildfly server caused a crash
- [breaking change] Replaced
teamscale-git-properties-jar
withgit-properties-jar
. Jars/Wars/Ears/Aars provided with this option will now also be searched recursively for git.properties files except you setsearch-git-properties-recursively=false
. - [feature] support
full
mode of the Maven git-commit-id plugin. - [fix] Providing multiple include pattern in the maven plugin resulted in no coverage being collected
- [fix] teamscale-gradle-plugin: Warnings were logged during test execution (WARNING: JAXBContext implementation could not be found. WADL feature is disabled., WARNING: A class javax.activation.DataSource for a default provider)
- [feature] The option
tiamode
has now an additional choicedisk
to dump testwise coverage as JSON to the output folder. - [feature] teamscale-maven-plugin: The configuration options
runAllTests
,runImpacted
, andtiamode
are now available - [fix] impacted-test-engine: Mixed test results for dynamically generated tests were incorrectly summarized
- [fix] The option
ignore-uncovered-classes
did not filter out empty interface nodes from the XML report - [fix] teamscale-gradle-plugin: The plugin failed to log the
No class files found in the given directories!
error message
- [fix] teamscale-gradle-plugin: Reports uploaded by
teamscaleReportUpload
ended up in wrong partition - [fix] impacted-test-engine: Failure when no tests were impacted
- [fix] report-generator: Fixed Gradle module metadata which resulted in
Could not find org.jacoco.agent-0.8.8-runtime
- [breaking change] teamscale-maven-plugin: Made plugin compatible with surefire 3.0.0. Replace the
teamscale-surefire-provider
dependency withimpacted-test-engine
in your pom.xml files. - [feature] teamscale-gradle-plugin, teamscale-maven-plugin: Added ability to pass excluded test engines to impacted test engine
- [fix] teamscale-maven-plugin: Testwise coverage uploads were performed per test cluster instead of one upload after all tests
- [fix] teamscale-gradle-plugin, teamscale-maven-plugin: Impacted tests were requested once for each test engine
- [fix] teamscale-gradle-plugin, teamscale-maven-plugin: Execution of impacted tests failed when test names were unstable i.e. parameterized tests with parameters that are not serializeable
- [fix] http control server was not correctly shut down after the tests ended
- [fix] teamscale-maven-plugin: Partition was not correctly provided to the impacted test engine
- [fix] tia-client: Semicolons in test names were not correctly sent to the Teamscale JaCoCo Agent
- [fix] teamscale-gradle-plugin, teamscale-maven-plugin, teamscale-jacoco-agent: Tooling did not provide a way to set the partial flag
- [feature] teamscale-gradle-plugin: Allow parallel test execution with testwise coverage collection
- [fix] teamscale-gradle-plugin: Verify that maxParallelForks is 1
- [fix] impacted-test-engine: Provide sane fallback for non-supported test engines
- [fix] Fixed the prefix extraction pattern and the partition pattern for Artifactory in the agent's documentation
- [fix/breaking change] teamscale-client, teamscale-gradle-plugin, teamscale-maven-plugin, teamscale-jacoco-agent: Teamscale 8.0 introduced the concept of execution units. To distinguish them from normal, singular test executions, the
-test-exection-
and-execution-unit-
uniform path prefixes were introduced. This broke gradle and maven test runner plugins because the actual test paths and Teamscale's uniform paths did not match anymore. To prevent this,testName
is now exposed by the teamscale client and used by the plugins which corresponds to the uniform path without the prefixes. If you're using the client, or listen to the/testrun/start
API from the Teamscale JaCoCo agent, this is a breaking change. You now need to usetestName
in your runner, not theuniformPath
.
- [breaking change] removed support for JavaWS
- [fix] Fixed git.properties detection when directories are on the classpath
- [fix] Updated dependencies (Fixes #225, CVE-2022-42889)
- [fix] teamscale-gradle-plugin: Property 'outputLocation' is declared as an output property of Report xml (type TaskGeneratedSingleFileReport) but does not have a task associated with it.
- [fix] teamscale-gradle-plugin: Failed to upload JUnit reports
- [breaking change] teamscale-gradle-plugin: Setting the destination within test.teamscale.reports.jacoco/junit transparently sets the report destination in the corresponding jacoco/junit plugins
- [breaking change] teamscale-gradle-plugin: TestwiseCoverageReportTask no longer clears the parent folder of the written testwise coverage report
- [fix] Testwise coverage conversion was slow when many .exec files are included.
- [fix] The agent could not be started with the
debug=true
command line option
- [fix] impacted-test-engine: Handle tests with trailing whitespaces correctly
- [breaking] impacted-test-engine: Now requires Teamscale 8.0 as minimum version
- [breaking] Find git.properties files recursively in folders, all types of archive files (jar, war, ear, aar, ...) and arbitrary depth. This was only possible for nested jar and war files and up to nesting depth 1. If you'd like to disable recursive search, e.g. due to performance issues, please use
search-git-properties-recursively=false
.
Note: This is not actually a breaking change but if you profile large projects and don't use the multi-project upload, you might want to disable recursive search.
- [fix] Maven plugin for TIA: sometimes the agent was not attached to a Spring Boot application during integration tests
- [feature] The Maven plugin now writes temporary reports to
target/tia/reports
in case of upload errors so they can be inspected manually. - [feature] The agent logs a warning when multiple java agents are used and recommends registering the Teamscale JaCoCo Agent first.
- [fix] fix POM metadata of Maven plugin to allow publishing it
- [feature] add Maven plugin for TIA
- [feature] added official support for Java 17 and 18 and experimental support for Java 19.
- [feature] New command line option:
debug
. Simplifies debugging by avoiding the process of providing an XML logging configuration file. In debug mode logs are written to console and a configurable directory. For more details, see here. - [breaking change] Artifactory uploader: use of new default upload schema for easy integration with Teamscale. To keep the old behavior add the
artifactory-legacy-path=true
option. For more details see here.
- [fix] teamscale-gradle-plugin: The
TestImpacted
task did not execute any tests whencollectTestwiseCoverage = false
was set
- [feature] add support for git properties files in jar files nested in jar or war files
- [feature] The agent logs now an error with further information when dumped coverage is empty
- [feature] add JUnit 5 TestExecutionListener for testwise coverage recording
- [breaking change] JUnit 4 RunListener renamed to com.teamscale.tia.runlistener.JUnit4TestwiseCoverageRunListener and published via new artifact com.teamscale:tia-runlisteners
- [fix] Not specifying certain options for the JUnit 5 impacted test engine caused an NPE
- [breaking change] teamscale-gradle-plugin: Removed automatic registration of mavenCentral repository (Makes the
plugin compatible with
dependencyResolutionManagement
) - [breaking change] teamscale-gradle-plugin: The
TestImpacted
task now collects testwise coverage by default even without the--impacted
option being set. Can be disabled programmatically withcollectTestwiseCoverage = false
. - [feature] The Teamscale server configuration for the
TestImpacted
task is only needed when--impacted
is used.
- [feature] Add REST endpoint to change revision and commit while agent is running.
- [fix] Restored upload to DockerHub
- [fix] The agent now uses HTTPS when port 443 is specified in a URL but no scheme is provided
- [fix] The Docker image is available again for the latest version of the JaCoCo agent
- [feature] The agent now follows HTTP 307/308 redirects for Teamscale uploads
- [fix] Updated to latest Log4J 2.17.1
- [feature] Option
teamscale-revision-manifest-jar
which can be used to read the git commit revision from theMETA-INF/MANIFEST.MF
in the Jar file. The field must be namedRevision
and must be provided as a main attribute. Alternatively the field can be calledGit_Commit
and must be an attribute of an entry calledGit
. - [breaking change] SSL validation (option
validate-ssl
) is now enabled by default
- [feature] teamscale-gradle-plugin: Improve compatibility with Groovy DSL
- [feature] teamscale-client: Added support for jQAssistant report format
- [feature] teamscale-client: Added upload endpoint that accepts a string instead of EReportFormat
- [feature] Option
artifactory-api-key
that can be used instead ofartifactory-user
andartifactory-password
as authentication mechanism for artifactory. - [feature] tia-client: Added all available report formats
- [feature] Option
obfuscate-security-related-outputs
to enable or disable obfuscating of security related outputs such as the access key. - [fix] Obfuscating the access key when logging it or printing it to the console.
- [fix] teamscale-gradle-plugin: Deprecation warnings under Gradle 7.1
- [fix] tia-client: Increased timout for connection to Teamscale JaCoCo agent
- [feature] Support for Java 16 (and experimental support for Java 17)
- [feature] Support for VFS (Virtual File System) URL format used in JBoss and Wildfly
- [fix] Upload to Teamscale mode for testwise coverage did report tests multiple times when multiple uploads were triggered
- [fix] Setting partition or message via REST did not strip JSON encoding quotes
- [feature] tia-client: dynamically set partition and message
- [fix] Upload to Teamscale mode for testwise coverage did miss some class files when class-dir was not explicitly given
- [feature] tia-client: expose rank of tests
- [fix] Spring Boot applications could not be profiled due to changes in their code location format
- [feature] teamscale-client: Impacted tests now allows to specify multiple partitions
- [feature] teamscale-client: Impacted tests baseline can now be a string
- [feature] teamscale-client: Impacted tests are queried with CHEAP_ADDITIONAL_COVERAGE_PER_TIME
- [feature] Support uploading to multiple Teamscale projects
- [feature] tia-client: add API to hash test data when creating ClusteredTestDetails
- [feature] support for SAP NWDI application profiling
- [feature] teamscale-gradle-plugin: support jacoco and junit report uploads to Teamscale
- [feature] teamscale-gradle-plugin: available on Gradle Plugin Portal
- [breaking change] teamscale-gradle-plugin: teamscale.report.partition is no longer available
- [breaking change] This release requires Teamscale 5.9 or higher
- [feature] Made ensure-processed and include-failed-and-skipped options available in teamscale-client
- [fix] option parsing errors were not logged in rare cases
- [breaking change] changed default message to include partition and upload date
- [breaking change] Bumped minimum supported Gradle version for the Gradle plugin to 6.5 so we can support Java 11
- [feature] Made score and duration of test selected by TIA available via the teamscale-client
- [breaking change] removed options
coverage-via-http
andteamscale-testwise-upload
. Usetia-mode=http
ortia-mode=teamscale-upload
instead. - [breaking change] tia-client: changed Java API
- [feature] always exclude common libraries from profiling to shrink coverage files
- [feature] enable changing and reading the commit message via a new
/message
REST endpoint - [breaking change] changing the partition is now a PUT request to
/partition
(formerly POST to/partition/{partitionName}
)
- [breaking change] default for
--interval
changed from 60 to 480 minutes - [feature] Support for uploading XML reports to artifactory
- [fix] Docker image did not react to SIGTERM
- [feature] All artifacts are now also available on Maven Central
- [fix]
test-env
option was ignored
- [fix] revision is ignored during validation for automatic upload to Teamscale
- [fix] Prevent "out of memory" in small JVMs: Don't cache test executions in memory
- [breaking change]
--ignore-duplicates
(and-d
option in convert tool) have been replaced with--duplicates
option - [breaking change]
--filter
option in convert tool has been renamed to--includes
- [breaking change]
--exclude
option in convert tool has been renamed to--excludes
- [fix] Remove retry logic for impacted tests request
- [fix] Resolve possible memory leak during report generation
- [feature] Use git.commit.id from git.properties instead of branch and timestamp
- [breaking change] Reduce XML report size by only including source file coverage, no class coverage
- [feature] New option
--ignore-uncovered-classes
to further reduce size of XML reports - [fix] converter produces duplicate test entries for testwise coverage
- [breaking change]
--classDir
option in convert tool has been renamed to--class-dir
- [feature]
--class-dir
option allows to pass in a.txt
file with the class file directories/jars separated by newlines
- [feature] add TIA client library for integrating TIA in your custom test framework
- [fix] Delete empty coverage directories
- [fix] Don't upload empty coverage reports
- [fix]
git.properties
commit was not used for upload - [feature] Upload ignored
origin/
prefix ingit.properties
's branch name - [fix]
http-server-port
option does not pass validation in normal mode - [fix] Executable spring boot jar produces no coverage
- [feature] Added
coverage-via-http
option for testwise mode - [feature] Added
teamscale-revision
option to supply VCS revision instead of branch and timestamp - [feature] Added
/revision
HTTP endpoint for testwise mode - [feature] Updated JaCoCo to 0.8.5
- [fix] Significantly reduced memory footprint
- [fix]
--run-all-tests
doesn't run any tests at all - [fix] test-wise coverage report incorrect for classes in default package
- [fix] WildFly won't start with agent attached
- [feature] make
out
parameter optional with sensible fallback (subdirectorycoverage
in agent installation directory) - [feature] if no
teamscale-commit
,teamscale-git-properties-jar
orteamscale-commit-manifest-jar
is configured, all loaded Jar/War/Ear/... files that contain profiled code are checked for agit.properties
file. This allows auto-detecting agit.properties
file without any additional configuration.
- [documentation] Configuration for SAP NetWeaver Java (>= 7.50) is now documented
- [feature] supplying a
class-dir
option is no longer mandatory - [feature] agent logs errors in case of empty coverage dumps (i.e. misconfigured agent)
- [fix] prevent NPE when trying to read manifest from Jar file
- [feature] support for git.properties to supply commit information
- [breaking change] Agent now ignores SSL certificates by default and only turns on validation if
validate-ssl=true
is passed in the agent arguments. Existing setups will continue to work but validation will be disabled from this version on - [fix] Agent uses higher timeouts (20s) for all HTTP connections to account for slow networks
- [fix] Reduced memory requirements for generating testwise coverage.
- [breaking change] When using the
convert
tool in--testwise-coverage
mode the new--split-after 5000
option will break up testwise coverage files automatically after the specified number of tests written. This ensures that generated reports are small enough to be uploaded to Teamscale. Default is5000
. The given output file will now be appended suffixed-1
,-2
etc.. If the specified output file is namedtestwise_coverage.json
the actually written file will be calledtestwise_coverage-1.json
for the first 5000 tests. For uploading multiple files use an upload session.
- [fix] Prevent
-1
to show up as covered line in Testwise Coverage report
- [feature] added
dump-on-exit
option - [breaking change] added
mode
option (Must be set for Testwise Coverage mode.http-server-port
ortest-env
alone is no longer sufficient) - [feature] The agent now optionally accepts test execution results via /test/end
- [feature] Support for Java 12
- [breaking change] The convert tool now uses wildcard patterns for the class matching (was ant pattern before)
- [breaking change] The agent returns the correct 204 and 400 status codes in Testwise Coverage mode
- [feature] The agent now also supports Java 11 code.
- [feature] The agent now also supports line coverage in Testwise Coverage mode
- [breaking change] Test impact mode no longer uploads reports to teamscale and does no longer generate reports on its own (see TEST_IMPACT_ANALYSIS_DOC -> How to get testwise coverage)
- [feature] Added
test-env
option
- [feature] Added option to upload to azure file storage
- [feature] Paths passed to the agent can now be relative and contain ant patterns
- [breaking change] switched to logback for logging. All logging configurations must be replaced with logback XMLs. This fixes Java 10 compatibility issues with Log4j by removing Log4j from the agent
- [feature] make agent log INFO and above to
agentdir/logs
by default - [fix] isolate agent further from the application to prevent errors from conflicting library versions
- [feature] dump interval of 0 only dumps at the end
- [fix] Test Impact Mode: Empty reports are no longer dumped
- [fix] Test Impact Mode: JUnit is uploaded before testwise coverage
- [fix] prevent log files from flooding disk with default log4j config files
- [fix] NativeWebSocketServletContainerInitializer not found
- [breaking change] added
teamscale-commit-manifest-jar
option. Automatic fallback to MANIFEST.MF on classpath is no longer supported
- [feature] added
config-file
option
- [fix] fixed class conflict with JAXB in WebSphere
- [feature] added Test Impact mode via
http-server-port
- [feature] added ability to read commit branch and timestamp from MANIFEST.MF
- [feature] added options to configure coverage upload to Teamscale
- [fix] remove version number from jar file name
- [fix] prefill the
javaws.properties
correctly on Windows
- [breaking change] removed
watch
mode and madeconvert
mode the default. Only the agent is now supported
- [feature] prevent clashes between our dependencies and the profile app's
- [breaking change] logging for the agent must now be configured via the
logging-config
parameter
- [breaking change] Docker image is now designed to use the agent instead of the client
- [feature] add wrapper around
javaws
to allow profiling Java Web Start applications
- [breaking change] ignore-duplicates is now the default for the agent to simplify the initial setup
- [fix] fix handling of Windows paths
- [fix] using
upload-url
in conjunction withupload-metadata
caused a crash
This version was never checked in, thus there is no tag for it in the Git
- [fix] using
upload-url
in conjunction withupload-metadata
caused corrupt files
- [breaking change] agent option separator is now a semicolon, no longer a colon (to support Windows paths)
- [breaking change] merged
include
andjacoco-include
parameters. Both use the JaCoCo pattern syntax - [feature] allow dumping via HTTP file upload
- [feature] add agent for regular dumping without separate process
- [breaking change] you must pass
true
orfalse
explicitly to the-d
parameter - [feature] allow setting explicit host name via
--host
- [feature] add Docker image
- [tooling] add Docker image build and Docker Hub project
- [fix] working directory was missing from systemd service file
- [feature] added
convert
mode to do one-time conversion. The old behavior is now reachable via thewatch
command ( which is also the default if no command is provided).
- [tooling] add GitLab build and
dist
task. Update documentation
- [feature] added
-d
switch to ignore non-identical, duplicate class files during report generation