Skip to content

v3.0.0 Machine Learning Insights

Choose a tag to compare

@JohT JohT released this 10 Nov 19:03
· 13 commits to main since this release
dc13e68

✨Highlights

Anomaly Detection

This update adds a powerful new component to the code analysis pipeline: an unsupervised machine learning module that automatically detects anomalies across your codebase—with zero manual tuning.
This pipeline generates over 10 insightful plots and CSV reports per code unit type (Java Artifacts, Java Types, Java Packages, and TypeScript Modules). Visualizations range from** intuitive 2D feature plots** that highlight unusual code patterns, to advanced statistical analyses and clustering techniques.
One standout addition: an Isolation Forest model that excels at spotting the “needle in the haystack”—uncovering rare and unexpected feature combinations that could indicate deeper issues or innovation opportunities.
This feature not only flags anomalies—it explains them, helping you understand why certain parts of your code stand out.

These related pull requests add further value to it:

  • Add graph visualizations to anomaly detection by @JohT in #451
  • Add Treemap visualization to anomaly detection by @JohT in #463
  • Anomaly Detection Archetypes and Markdown Summary by @JohT in #431

Association rule metrics for files that changed together based on the git history

Previously, only the commit count existed for files that co-changed (pairwise) together. Even if this is very intuitive, it is biased towards files that change very often (README, pom.xml, ....). Now, a couple of other metrics like Confidence, Lift and Jaccard Similarity from the field of association rule learning are available and integrated in existing and newly added reports. Questions like "which files change together surprisingly often?" can now be answered with CSV reports and even visually with a Ttreemap chart.

This related pull request adds further value to it:

  • Classify git commits and use only manual commits in co-change analysis by @JohT in #419

🚀 More Features

⚙️ Improvements

  • Migrate to Neo4j 2025.03.0 (5.27.0) and Java 21 LTS (Long-term support) by @JohT in #373
  • Pin Python venv and conda dependencies by @JohT in #439
  • Retire deprecated graph-visualization package and update main documentation by @JohT in #469

🛠 Fixes

  • Minor fixes by @JohT in #393
  • Fix missing Graph visualizations with optional links and parametrized weight property by @JohT in #457
  • Fix anomaly Graph visualization executed twice and add DEPENDS_ON schema output by @JohT in #461
  • Skip TypeScript packages with a package.json marked as private. by @JohT in #462
  • Verify missing typescript module dependencies with warnings by @JohT in #466

📦 Dependency Updates

  • Update actions/download-artifact digest to d3f86a1 by @renovate[bot] in #374
  • Update dependency AxonFramework/AxonFramework to v4.11.2 by @renovate[bot] in #375
  • Update dependency puppeteer to v24.8.0 by @renovate[bot] in #378
  • Update dependency glob to v11.0.2 by @renovate[bot] in #377
  • Update dependency JohT/open-graph-data-science-packaging to v2.17.1 by @renovate[bot] in #363
  • Update dependency org.jqassistant.plugin:jqassistant-npm-plugin to v2.1.1 by @renovate[bot] in #379
  • Update jQAssistant TypeScript Plugin to v1.4.0 by @renovate[bot] in #380
  • Update Neo4j and APOC to 2025.04.0 by @renovate[bot] in #382
  • Update dependency com.buschmais.jqassistant.cli:jqassistant-commandline-neo4jv5 to v2.7.0 by @renovate[bot] in #381
  • Update dependency remix-run/react-router to v6.30.0 by @renovate[bot] in #384
  • Update dependency puppeteer to v24.8.2 by @renovate[bot] in #383
  • Update dependency remix-run/react-router to v6.30.1 by @renovate[bot] in #385
  • Update Node.js to v23.11.1 by @renovate[bot] in #386
  • Update dependency renovate to v39.264.1 by @renovate[bot] in #388
  • Update dependency puppeteer to v24.10.0 by @renovate[bot] in #387
  • Update Neo4j and APOC to 2025.05.0 by @renovate[bot] in #390
  • Update dependency JohT/open-graph-data-science-packaging to v2.18.0 by @renovate[bot] in #389
  • Update dependency puppeteer to v24.11.1 by @renovate[bot] in #392
  • Update Neo4j and APOC to 2025.05.1 by @renovate[bot] in #395
  • Update dependency org.jqassistant.plugin.typescript:jqassistant-typescript-plugin to v1.4.1 by @renovate[bot] in #394
  • Update dependency @jqassistant/ts-lce to v1.4.1 by @renovate[bot] in #396
  • Update dependency puppeteer to v24.11.2 by @renovate[bot] in #397
  • Update dependency JohT/open-graph-data-science-packaging to v2.19.0 by @renovate[bot] in #400
  • Update dependency com.buschmais.jqassistant.cli:jqassistant-commandline-neo4jv5 to v2.7.1 by @renovate[bot] in #399
  • Update actions/upload-artifact digest to ea165f8 by @renovate[bot] in #354
  • Update dependency glob to v11.0.3 by @renovate[bot] in #391
  • Update dependency puppeteer to v24.14.0 by @renovate[bot] in #401
  • Update Neo4j and APOC to 2025.06.2 by @renovate[bot] in #402
  • Update dependency neo4j/graph-data-science to v2.19.0 by @renovate[bot] in #403
  • Update dependency JohT/open-graph-data-science-packaging to v2.20.0 by @renovate[bot] in #406
  • Update dependency puppeteer to v24.15.0 by @renovate[bot] in #405
  • Update dependency neo4j/graph-data-science to v2.20.0 by @renovate[bot] in #407
  • Update dependency AxonFramework/AxonFramework to v4.12.0 by @renovate[bot] in #404
  • Update dependency neo4j/neo4j by @renovate[bot] in #409
  • Update Python setuptools to 80.9.* to fix security issue by @JohT in #412
  • Update actions/cache digest to 0400d5f by @renovate[bot] in #415
  • Update actions/checkout digest to 08eba0b by @renovate[bot] in #417
  • Update dependency AxonFramework/AxonFramework to v4.12.1 by @renovate[bot] in #416
  • Update actions/setup-java action to v5 by @renovate[bot] in #427
  • Update actions/download-artifact action to v5 by @renovate[bot] in #426
  • Update actions/checkout action to v5 by @renovate[bot] in #425
  • Update Neo4j and APOC to 2025.08.0 by @renovate[bot] in #424
  • Update dependency neo4j/graph-data-science to v2.21.0 by @renovate[bot] in #423
  • Update actions/setup-node action to v5 by @renovate[bot] in #428
  • Update actions/setup-python action to v6 by @renovate[bot] in #429
  • Update jQAssistant TypeScript Plugin to v1.4.2 by @renovate[bot] in #430
  • Update dependency puppeteer to v24.20.0 by @renovate[bot] in #435
  • Update jQAssistant TypeScript Plugin to v1.4.3 by @renovate[bot] in #438
  • Update dependency puppeteer to v24.22.2 by @renovate[bot] in #442
  • Update dependency puppeteer to v24.22.3 by @renovate[bot] in #447
  • Update actions/cache digest to 0057852 by @renovate[bot] in #446
  • Update dependency JohT/open-graph-data-science-packaging to v2.22.0 by @renovate[bot] in #448
  • Update python-machine-learning-libs by @renovate[bot] in #444
  • Update python-visualization-libs by @renovate[bot] in #449
  • Update dependency neo4j/graph-data-science to v2.22.0 by @renovate[bot] in #454
  • Update dependency @hpcc-js/wasm-graphviz-cli to v1.6.0 by @renovate[bot] in #456
  • Update dependency pip to v25.3 [SECURITY] by @renovate[bot] in #460
  • Update dependency puppeteer to v24.27.0 by @renovate[bot] in #458
  • Update dependency markdown-link-check to v3.14.1 by @renovate[bot] in #453
  • Update dependency com.buschmais.jqassistant.cli:jqassistant-commandline-neo4jv5 to v2.8.0 by @renovate[bot] in #464
  • Update dependency puppeteer to v24.29.1 by @renovate[bot] in #468
  • Update python-visualization-libs by @renovate[bot] in #452
  • Update dependency pandas to v2.3.3 by @renovate[bot] in #450
  • Update python-machine-learning-libs by @renovate[bot] in #459
  • Update dependency AxonFramework/AxonFramework to v4.12.2 by @renovate[bot] in #467

Full Changelog: v2.1.4...v3.0.0