Skip to content

Releases: matwoess/jsourceprofiler

v0.13.0

Choose a tag to compare

@github-actions github-actions released this 01 Aug 03:13

Fixes and doc updates

  • A lot of documentation updates happened since the last release (although not recently).
  • Extend grammar to fix an issue with parsing annotations between the new keyword and the type.
  • Extend grammar to avoid parser errors when a single-statement lambda terminates with , followed by further arguments.
  • Make sure the latest (instrumented) version of JUnit5 compiles again.

v0.12.0

Choose a tag to compare

@github-actions github-actions released this 09 Jan 22:05

Breaking Change: Renamed Repository and Packages

The repository was renamed from (generic) "java-profiler" to (unique) "jsourceprofiler".
At the time of this release, there were no other public GitHub repositories or Maven packages named "jsourceprofiler".
The new name also puts more emphasis on what the program does (only instrument Java project source code).

Also, I've finally bought my own domain name matwoess.org.

All future packages will be released under the new groupId org.matwoess (instead of io.github.matwoess).
Artifacts and modules now use the prefix jsourceprofiler, and packages will will be fully-qualified (including groupId).
(Previously, importing a class from the published package would have just been import common.*; or import tool.*;)

All build files, scripts and workflows have been updated to work with the new structure.

Currently the jsourceprofiler-common and jsourceprofiler-tool packages are published to GitHub packages and Maven Central.
The jsourceprofier-fxui application is still tested manually and not published with Maven.

v0.11.3

Choose a tag to compare

@github-actions github-actions released this 03 Jan 00:10

Fixes and Refactoring

  • fix an issue where switch statement/expression body blocks counted (negatively) to block coverage
    (exclude switch body block)
  • refactor some helper methods

v0.11.2

Choose a tag to compare

@github-actions github-actions released this 03 Jan 00:05

Report Improvements

  • Add thousands separator to report tables and sources view
  • Update JavaScript files to work with additional "," characters
    (sorting in index tables and hit count extraction for dynamic region-hit-column)
  • Fix hit-max calculation (for high hit counts) by using long integers
  • Produce more correct HTML files by using "data-*" prefix for custom element attributes

Package publishing

  • Use com.vanniktech.maven.publish Gradle plugin to enable package signing and publishing to GitHub and Maven Central
  • Update module names to include the "java-" prefix ("java-profiler-tool" instead of "profiler-tool") for less ambiguity
  • Update workflows and scripts to be compatible with new structure

v0.11.1

Choose a tag to compare

@github-actions github-actions released this 30 Nov 00:43

Report improvements

  • add syntax highlighting to report source files using highlight.js after DOM is loaded
  • apply hits column dynamic after syntax highlighting is done (to avoid applying highlighting and reduce file size)
  • replace lNr column with automatic CSS line number column (using the ::before marker)
  • move coverage highlighting logic to CSS classes/attributes (instead of setting element style using JS)
  • apply :target marker to the whole line and apply box effect (more noticeable than the colored line number cell)

Other improvements

  • new "common" method to extract entire js/ and css/ folders to report directory (instead of specifying each resource explicitly)
  • fix case of multiple annotations for a single enum constant in grammar

v0.10.0

Choose a tag to compare

@github-actions github-actions released this 09 Jun 23:36

Official Java 21 support

  • (Unit-)Test Parser grammar against new Java 21 language syntax features
  • Include switch pattern matching (and guard clause) sample and tests
  • Build project with Java 21 by default (but produce Java 17 compatible binaries)
  • Update all dependencies and GitHub actions
  • Fix unittests incompatible with Java 21

Other improvements

  • finalize new and improved report (styling and metric display, sorting of percentage columns)
  • update/improve README.md (repo-local screenshots, more thesis paper content, better examples, ...)

v0.9.4

Choose a tag to compare

@github-actions github-actions released this 02 May 22:34

Fix Report Paths for Windows

Most href paths and CSS @import statements had issues on Windows due to backward slashes.
This problem was fixed by exclusively using forward slashes inside report files.

The changes should fix (on Windows systems):

  • correctly importing CSS stylesheets in each file
  • navigating back to the class index with the button in each file

v0.9.3

Choose a tag to compare

@github-actions github-actions released this 30 Apr 23:03

Report Improvements

The generated HTML report was updated, styled and extended in many ways to give more insights, improved navigation and to allow manual sorting of columns.

New Metrics

Method index tables have two new columns:

  • "Block Hit Max" - showing the number of hits for the most frequently executed code block in this method
  • "Code Block Coverage" - the percentage of covered over non-covered blocks in this method

Class index files also have two new table columns:

  • "Block Hit Max" - the aggregated maximum of block hits in all methods of this class
  • "Method Coverage" - the percentage of how many of the classes' methods were invoked at least once

Custom Column Sorting

The header cells of index tables are now clickable and will trigger a re-sorting of the table rows (js+jQuery).
When clicking on a metric column the rows will be sorted in descending order first.
For text columns (class name, link to source file) the order will be ascending first (alphabetically).
Clicking an already sorted column again will invert the sort order.

Disclaimer:
The sorting is done in-memory and won't be persisted.
Reloading the index page will restore the original state.
In a future release the sort order could be encoded in the URL as a parameter.

Breadcrumb Button

To quickly return to the class index every file has a button (at the very top) to navigate back to it.
This simple approach was chosen because we have no information on how we've reached a report source file.
Depending on whether we went there from the class index directly, or over a method index, breadcrumb nodes would be different.

Miscellaneous Updates

  • Instead of writing CSS directly into HTML files, a "css" report folder is generated, containing common index.css and source.css definitions
  • Each file now contains a footer with information about when it was created
  • The currently sorted-by column will be marked with a ▼ / ▲ suffix
  • Currently hovered-upon table rows and column header cells will be specially highlighted

v0.9.2

Choose a tag to compare

@github-actions github-actions released this 21 Mar 00:23

General improvements

Filter Java files inside hidden directories and improve GitHub CI workflows.

Exclude hidden directories

  • When recursively retrieving Java files in the "sources directory", do not follow paths inside folders starting with "." (but follow "..")
  • New helper class FileCollector + unit tests

GitHub workflow improvements

  • Upload JUnit test results to workflow runs for instant inspection and overview
  • Update step naming and style inside yaml files
  • Replace legacy actions with newer an maintained ones

v0.9.1

Choose a tag to compare

@github-actions github-actions released this 09 Mar 23:13

Hotfix release

Includes improved pathing, creating report shortcuts on windows, additional unittests and better documentation.

Pathing

  • improved check of whether the main file is a descendant of the sources directory (using their canonical file paths)
  • Fix: allow specifying "." as the sources directory while the Main file is also in this directory
  • handle case of mismatching roots (drive letters on Windows) for temporary files, if the project itself is not on C:\
  • handle case of specifying the sources directory and the main file as different path types (relative and absolute paths are mostly incompatible)

Report link on Windows

  • On Windows we now create a shortcut (.lnk) to the main report file instead of symbolic link (which is usually not allowed)
    • This is done using a PowerShell script over the command line

New Coco/R version

The new Coco/R release has a class file version of 65.0.
To be compatible, the project was updated to be build-able with Java 21.
The releases are still backwards compatible to Java 17 (class file version 61.0).