Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
e0060f5
feat: Spring Boot 4 project foundation (Phase 1 Java rewrite)
aksOps Mar 29, 2026
40e4611
fix: address Phase 1 code review findings for Java rewrite
aksOps Mar 29, 2026
bb4c8ef
feat: add benchmark tests, language mapping test, and DetectorUtils
aksOps Mar 29, 2026
8254424
feat: add detector infrastructure — interface, records, base classes,…
aksOps Mar 29, 2026
32e1b0b
feat: detector infrastructure + benchmarks + test framework
aksOps Mar 29, 2026
cbb926c
feat: port all 11 Python-language detectors to Java
aksOps Mar 29, 2026
2f6a69a
feat: port all 13 TypeScript/JavaScript detectors from Python to Java
aksOps Mar 29, 2026
702564a
feat: port all 18 config/infrastructure detectors from Python to Java
aksOps Mar 29, 2026
496c9d1
feat: port all 28 Java detectors from Python to Java
aksOps Mar 29, 2026
3dcc737
feat: port remaining 27 detectors from Python to Java (13 categories)
aksOps Mar 29, 2026
b7c3d84
feat: add analysis pipeline — file discovery, graph builder, linkers,…
aksOps Mar 29, 2026
9bc141b
test: add full analysis integration test against real spring-boot cod…
aksOps Mar 29, 2026
4e81645
fix: close edge count gap — set module on all nodes and fix structure…
aksOps Mar 29, 2026
4a8e1e1
feat: upgrade 6 Java detectors to JavaParser AST parsing with regex f…
aksOps Mar 29, 2026
d73b1eb
fix: make JavaParser thread-safe with ThreadLocal to close node gap
aksOps Mar 29, 2026
07944fe
feat: add Phase 3 — query engine, REST API, MCP server, Hazelcast cac…
aksOps Mar 29, 2026
a720d7b
feat: add Phase 4 — Picocli CLI layer with all 11 commands
aksOps Mar 29, 2026
f464364
feat: add Phase 6 — CI/CD pipelines, Docker image, Helm chart, and re…
aksOps Mar 29, 2026
cf86baf
feat: add Phase 5 — Thymeleaf + HTMX web UI for graph exploration
aksOps Mar 29, 2026
3ffadac
docs: add comprehensive benchmark results — Java vs Python
aksOps Mar 29, 2026
a6f482e
feat: add beta auto-release workflow for Java rewrite
aksOps Mar 29, 2026
d605e48
fix: add JacksonConfig, clean up McpTools unused import
aksOps Mar 29, 2026
4383d6e
test: add extended tests to boost JaCoCo coverage from 77% to 87%
aksOps Mar 29, 2026
edd7cbd
docs: update benchmark results with actual measured data
aksOps Mar 29, 2026
e366852
fix: switch Maven Central publishing from OSSRH to Central Portal
aksOps Mar 29, 2026
a8bc0f8
fix: add source JAR, javadoc JAR, GPG signing for Maven Central
aksOps Mar 29, 2026
7031310
fix: suppress all logging noise in CLI mode for clean output
aksOps Mar 29, 2026
cdf947b
checkpoint: pre-yolo 20260329-143828
aksOps Mar 29, 2026
dddddb1
Rewrite 11 Python detectors from regex to ANTLR AST with regex fallback
aksOps Mar 29, 2026
ebbac6b
Rewrite 12 detectors (Go/C#/Rust/Kotlin/Scala/C++) from regex to ANTL…
aksOps Mar 29, 2026
5427eeb
Rewrite 13 TypeScript/JavaScript detectors from regex to ANTLR AST
aksOps Mar 29, 2026
f80a7dd
fix: resolve ANTLR performance regression — skip parsing for regex-on…
aksOps Mar 29, 2026
6fe7cf6
feat: add YAML export, --parallelism flag, /api/file endpoint, .ossco…
aksOps Mar 29, 2026
0a2a0f2
feat: wire MCP tools, bundle with flow.html, incremental analysis cache
aksOps Mar 29, 2026
78e2ab8
fix: synchronize SQLite cache for virtual thread safety
aksOps Mar 29, 2026
7ad7d99
feat: add stats CLI command with rich categorized graph statistics
aksOps Mar 29, 2026
73fa1f4
feat: add stats CLI command with rich categorized output
aksOps Mar 29, 2026
3a0a55f
build: remove JaCoCo coverage enforcement, let SonarCloud handle qual…
aksOps Mar 29, 2026
89f7691
build: cross-platform CI matrix, SonarCloud config, Docker AOT + heal…
aksOps Mar 29, 2026
53e7b6f
docs: add Java version README, CLAUDE.md, and migration guide
aksOps Mar 29, 2026
f6eedf2
build: switch from beta releases to SNAPSHOT deploys
aksOps Mar 29, 2026
8f4ab51
chore: clean Python code from java branch, update .gitignore
aksOps Mar 29, 2026
c00a47c
fix: move GPG signing to release profile only — SNAPSHOTs don't need …
aksOps Mar 29, 2026
ff517b7
Migrate analysis cache from SQLite to H2 for virtual thread compatibi…
aksOps Mar 29, 2026
7c5573a
docs: update memory optimization spec with 3-command architecture (in…
aksOps Mar 29, 2026
b99703a
docs: add pipeline configuration & discovery spec
aksOps Mar 29, 2026
1b07042
fix: move central-publishing-maven-plugin to release profile so SNAPS…
aksOps Mar 29, 2026
3d0c187
Add @DetectorInfo annotation to all 97 detectors with category-based …
aksOps Mar 29, 2026
a40098e
Add readFile line range support, startup optimization, and cleanup un…
aksOps Mar 29, 2026
1030f7b
Implement index/enrich/serve three-command architecture for memory op…
aksOps Mar 29, 2026
3900087
Implement Phase C: Service Topology — SERVICE nodes, TopologyService,…
aksOps Mar 29, 2026
428cb64
Fix Spring bean wiring: make Neo4j-dependent beans conditional for in…
aksOps Mar 29, 2026
ea6e213
Switch to manual beta releases with auto-versioning and add CLI class…
aksOps Mar 29, 2026
29be78a
Fix CLI command crashes and H2 cache data loss
aksOps Mar 30, 2026
1ac7acd
Fix BundleCommand: add no-arg constructor for Picocli instantiation
aksOps Mar 30, 2026
245d856
Fix all code review bugs: security, thread safety, correctness, and c…
aksOps Mar 30, 2026
89c0f43
Document Kotlin Compiler API evaluation: regex approach sufficient
aksOps Mar 30, 2026
f95bc54
Add dedicated TypeScript ANTLR grammar for TS-specific syntax detection
aksOps Mar 30, 2026
7643757
Add serve E2E (H2-backed REST), multi-repo --graph flag, fix TS detec…
aksOps Mar 30, 2026
e30fcca
Add React UI dashboard with Vite, Tailwind, Cytoscape.js, and Monaco …
aksOps Mar 30, 2026
0255efd
Fix CI/CD: add permissions, target main branch, harden Dockerfile
aksOps Mar 30, 2026
c2a4f72
Fix beta workflow: add missing GPG passphrase for Maven Central signing
aksOps Mar 30, 2026
4807d2d
Update README: accurate counts, 3-command architecture, topology, Rea…
aksOps Mar 30, 2026
84ee8ad
Fix flow command and API to work from H2 cache without Neo4j
aksOps Mar 30, 2026
1ef2b1b
Fix UI dashboard, topology connections, H2 dedup, Neo4j serve, Result…
aksOps Mar 30, 2026
6dc2ac9
Fix McpTools FlowEngine dependency: make Optional for H2 fallback
aksOps Mar 30, 2026
e3efc41
Remove Python CI/CD workflows — project is now Java only
aksOps Mar 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Binary file added .coverage
Binary file not shown.
9 changes: 9 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
.git
target
node_modules
*.md
docs/
tests/
.github/
helm/
src/osscodeiq/
70 changes: 70 additions & 0 deletions .github/workflows/beta-java.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: Beta Release (Java)
on:
workflow_dispatch: # Manual trigger ONLY

jobs:
beta:
runs-on: ubuntu-latest
permissions:
contents: write
packages: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '25'
cache: 'maven'
server-id: central
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }}
gpg-passphrase: MAVEN_GPG_PASSPHRASE

- name: Determine beta version
id: version
run: |
LATEST_BETA=$(git tag -l 'v0.0.1-beta.*' | sort -V | tail -1)
if [ -z "$LATEST_BETA" ]; then
NEXT_NUM=0
else
CURRENT_NUM=$(echo "$LATEST_BETA" | grep -oP 'beta\.\K[0-9]+')
NEXT_NUM=$((CURRENT_NUM + 1))
fi
VERSION="0.0.1-beta.${NEXT_NUM}"
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "tag=v$VERSION" >> $GITHUB_OUTPUT
echo "Next beta version: $VERSION"

- name: Set version in pom.xml
run: mvn versions:set -DnewVersion=${{ steps.version.outputs.version }} -B

- name: Build and test
run: mvn clean verify -B

- name: Deploy to Maven Central
env:
MAVEN_USERNAME: ${{ secrets.OSS_NEXUS_USER }}
MAVEN_PASSWORD: ${{ secrets.OSS_NEXUS_PASS }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
run: mvn deploy -P release -DskipTests -B

- name: Create git tag
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git tag -a ${{ steps.version.outputs.tag }} -m "Beta release ${{ steps.version.outputs.version }}"
git push origin ${{ steps.version.outputs.tag }}

- name: Create GitHub Release
uses: softprops/action-gh-release@v2

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium

Unpinned 3rd party Action 'Beta Release (Java)' step
Uses Step
uses 'softprops/action-gh-release' with ref 'v2', not a pinned commit hash
with:
tag_name: ${{ steps.version.outputs.tag }}
name: "Beta ${{ steps.version.outputs.version }}"
prerelease: true
generate_release_notes: true
files: |
target/code-iq-*-cli.jar
110 changes: 0 additions & 110 deletions .github/workflows/beta.yml

This file was deleted.

45 changes: 45 additions & 0 deletions .github/workflows/ci-java.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Java CI
on:
push:
branches: [main, java]
paths: ['src/**', 'pom.xml']
pull_request:
branches: [main, java]

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '25'
cache: 'maven'
- run: mvn clean verify -B
- uses: actions/upload-artifact@v4
if: always()
with:
name: test-results
path: target/surefire-reports/
- uses: actions/upload-artifact@v4
with:
name: coverage-report
path: target/site/jacoco/

cross-platform:
Comment on lines +11 to +30

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}

Copilot Autofix

AI about 2 months ago

To fix the problem, explicitly restrict the GITHUB_TOKEN permissions for this workflow to the minimum required. Since the jobs only check out code, set up Java, run Maven, and upload artifacts, they only need read access to repository contents. The simplest safe fix is to add a root-level permissions: block with contents: read, which will apply to all jobs that don’t override it.

Concretely:

  • Edit .github/workflows/ci-java.yml.
  • Insert a permissions: block near the top of the workflow (after name: and before on: or after on:), setting contents: read.
  • This single block covers both build and cross-platform jobs, and does not change any functionality of the workflow other than tightening token permissions.

No additional methods, imports, or external definitions are needed—this is purely a YAML configuration change.

Suggested changeset 1
.github/workflows/ci-java.yml

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/.github/workflows/ci-java.yml b/.github/workflows/ci-java.yml
--- a/.github/workflows/ci-java.yml
+++ b/.github/workflows/ci-java.yml
@@ -1,4 +1,6 @@
 name: Java CI
+permissions:
+  contents: read
 on:
   push:
     branches: [main, java]
EOF
@@ -1,4 +1,6 @@
name: Java CI
permissions:
contents: read
on:
push:
branches: [main, java]
Copilot is powered by AI and may make mistakes. Always verify output.
needs: build
strategy:
fail-fast: false
matrix:
os: [windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '25'
cache: 'maven'
- run: mvn clean verify -B -pl . -Dfrontend.skip=true
continue-on-error: true
Comment on lines +31 to +45

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}

Copilot Autofix

AI about 2 months ago

Generally, to fix this type of problem, you add a permissions section that explicitly restricts the GITHUB_TOKEN to the least privileges needed. For a typical CI workflow that only checks out code, runs builds/tests, and uploads artifacts, contents: read is sufficient, and you can declare it either at the workflow root (applies to all jobs) or per job.

For this specific workflow in .github/workflows/ci-java.yml, the best fix without changing behavior is to add a workflow-level permissions block right after the name (or after on:) so that both build and cross-platform jobs inherit it. Since the jobs only read repository contents and do not use any write operations (no releases, PR updates, issue modifications, etc.), we can safely set:

permissions:
  contents: read

No additional imports or methods are needed; this is pure YAML configuration. The change will ensure that, regardless of organization/repo defaults, this workflow always runs with a read-only GITHUB_TOKEN for repository contents and satisfies the CodeQL rule.

Suggested changeset 1
.github/workflows/ci-java.yml

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/.github/workflows/ci-java.yml b/.github/workflows/ci-java.yml
--- a/.github/workflows/ci-java.yml
+++ b/.github/workflows/ci-java.yml
@@ -1,4 +1,6 @@
 name: Java CI
+permissions:
+  contents: read
 on:
   push:
     branches: [main, java]
EOF
@@ -1,4 +1,6 @@
name: Java CI
permissions:
contents: read
on:
push:
branches: [main, java]
Copilot is powered by AI and may make mistakes. Always verify output.
31 changes: 0 additions & 31 deletions .github/workflows/ci.yml

This file was deleted.

Loading
Loading