Skip to content

Commit 81b645c

Browse files
aksOpsclaude
andcommitted
OSSCodeIQ: Complete Java rewrite — Spring Boot 4 + Java 25 LTS
Full rewrite from Python to Java/Spring Boot for production-grade code intelligence. Core: - 97 detectors (9 categories), 35+ languages, deterministic graph output - JavaParser AST (Java), ANTLR grammars (TS/JS/Python/Go/C#/Rust/Kotlin/Scala/C++) - Three-command architecture: index (H2 batched) → enrich (Neo4j) → serve (REST+MCP+UI) - Config-driven pipeline via .osscodeiq.yml - Virtual threads (Java 25) with adaptive parallelism Server: - 32+ REST API endpoints, 31 MCP tools (Spring AI), React UI (6 pages) - Service topology with blast radius, circular deps, bottleneck detection - Hazelcast distributed cache (local + K8s discovery) - Neo4j Embedded graph DB with H2 fallback for REST Infrastructure: - 1,227 tests passing, Maven build - GitHub Actions CI (cross-platform), beta/release workflows - Docker (Temurin 25, ZGC, AOT cache, non-root user) - Helm chart for K8s deployment - Maven Central publishing (io.github.randomcodespace.iq:code-iq) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent c9418f4 commit 81b645c

764 files changed

Lines changed: 77097 additions & 44655 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.coverage

76 KB
Binary file not shown.

.dockerignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
.git
2+
target
3+
node_modules
4+
*.md
5+
docs/
6+
tests/
7+
.github/
8+
helm/
9+
src/osscodeiq/

.github/workflows/beta-java.yml

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
name: Beta Release (Java)
2+
on:
3+
workflow_dispatch: # Manual trigger ONLY
4+
5+
jobs:
6+
beta:
7+
runs-on: ubuntu-latest
8+
permissions:
9+
contents: write
10+
packages: write
11+
steps:
12+
- uses: actions/checkout@v4
13+
with:
14+
fetch-depth: 0
15+
16+
- uses: actions/setup-java@v4
17+
with:
18+
distribution: 'temurin'
19+
java-version: '25'
20+
cache: 'maven'
21+
server-id: central
22+
server-username: MAVEN_USERNAME
23+
server-password: MAVEN_PASSWORD
24+
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }}
25+
26+
- name: Determine beta version
27+
id: version
28+
run: |
29+
LATEST_BETA=$(git tag -l 'v0.0.1-beta.*' | sort -V | tail -1)
30+
if [ -z "$LATEST_BETA" ]; then
31+
NEXT_NUM=0
32+
else
33+
CURRENT_NUM=$(echo "$LATEST_BETA" | grep -oP 'beta\.\K[0-9]+')
34+
NEXT_NUM=$((CURRENT_NUM + 1))
35+
fi
36+
VERSION="0.0.1-beta.${NEXT_NUM}"
37+
echo "version=$VERSION" >> $GITHUB_OUTPUT
38+
echo "tag=v$VERSION" >> $GITHUB_OUTPUT
39+
echo "Next beta version: $VERSION"
40+
41+
- name: Set version in pom.xml
42+
run: mvn versions:set -DnewVersion=${{ steps.version.outputs.version }} -B
43+
44+
- name: Build and test
45+
run: mvn clean verify -B
46+
47+
- name: Deploy to Maven Central
48+
env:
49+
MAVEN_USERNAME: ${{ secrets.OSS_NEXUS_USER }}
50+
MAVEN_PASSWORD: ${{ secrets.OSS_NEXUS_PASS }}
51+
run: mvn deploy -P release -DskipTests -B
52+
53+
- name: Create git tag
54+
run: |
55+
git config user.name "github-actions[bot]"
56+
git config user.email "github-actions[bot]@users.noreply.github.com"
57+
git tag -a ${{ steps.version.outputs.tag }} -m "Beta release ${{ steps.version.outputs.version }}"
58+
git push origin ${{ steps.version.outputs.tag }}
59+
60+
- name: Create GitHub Release
61+
uses: softprops/action-gh-release@v2
62+
with:
63+
tag_name: ${{ steps.version.outputs.tag }}
64+
name: "Beta ${{ steps.version.outputs.version }}"
65+
prerelease: true
66+
generate_release_notes: true
67+
files: |
68+
target/code-iq-*-cli.jar

.github/workflows/ci-java.yml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
name: Java CI
2+
on:
3+
push:
4+
branches: [main, java]
5+
paths: ['src/**', 'pom.xml']
6+
pull_request:
7+
branches: [main, java]
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
- uses: actions/setup-java@v4
15+
with:
16+
distribution: 'temurin'
17+
java-version: '25'
18+
cache: 'maven'
19+
- run: mvn clean verify -B
20+
- uses: actions/upload-artifact@v4
21+
if: always()
22+
with:
23+
name: test-results
24+
path: target/surefire-reports/
25+
- uses: actions/upload-artifact@v4
26+
with:
27+
name: coverage-report
28+
path: target/site/jacoco/
29+
30+
cross-platform:
31+
needs: build
32+
strategy:
33+
fail-fast: false
34+
matrix:
35+
os: [windows-latest, macos-latest]
36+
runs-on: ${{ matrix.os }}
37+
steps:
38+
- uses: actions/checkout@v4
39+
- uses: actions/setup-java@v4
40+
with:
41+
distribution: 'temurin'
42+
java-version: '25'
43+
cache: 'maven'
44+
- run: mvn clean verify -B -pl . -Dfrontend.skip=true
45+
continue-on-error: true

.github/workflows/release-java.yml

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
name: Release to Maven Central
2+
on:
3+
workflow_dispatch:
4+
inputs:
5+
version:
6+
description: 'Release version (e.g., 0.1.0)'
7+
required: true
8+
9+
jobs:
10+
release:
11+
runs-on: ubuntu-latest
12+
permissions:
13+
contents: write
14+
steps:
15+
- uses: actions/checkout@v4
16+
- uses: actions/setup-java@v4
17+
with:
18+
distribution: 'temurin'
19+
java-version: '25'
20+
cache: 'maven'
21+
server-id: central
22+
server-username: MAVEN_USERNAME
23+
server-password: MAVEN_PASSWORD
24+
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }}
25+
gpg-passphrase: MAVEN_GPG_PASSPHRASE
26+
- name: Set release version
27+
env:
28+
RELEASE_VERSION: ${{ inputs.version }}
29+
run: mvn versions:set -DnewVersion="$RELEASE_VERSION"
30+
- name: Deploy to Maven Central
31+
env:
32+
MAVEN_USERNAME: ${{ secrets.OSS_NEXUS_USER }}
33+
MAVEN_PASSWORD: ${{ secrets.OSS_NEXUS_PASS }}
34+
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
35+
run: mvn clean deploy -P release -B
36+
- name: Tag release
37+
env:
38+
RELEASE_VERSION: ${{ inputs.version }}
39+
run: |
40+
git tag "v${RELEASE_VERSION}"
41+
git push origin "v${RELEASE_VERSION}"
42+
- uses: softprops/action-gh-release@v2
43+
with:
44+
tag_name: v${{ inputs.version }}
45+
generate_release_notes: true
46+
files: |
47+
target/code-iq-*-cli.jar
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: SonarCloud Java
2+
on:
3+
push:
4+
branches: [main, java]
5+
paths: ['src/**', 'pom.xml']
6+
pull_request:
7+
branches: [main, java]
8+
9+
jobs:
10+
sonar:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
with:
15+
fetch-depth: 0
16+
- uses: actions/setup-java@v4
17+
with:
18+
distribution: 'temurin'
19+
java-version: '25'
20+
cache: 'maven'
21+
- name: Build and generate coverage
22+
run: mvn clean verify -B
23+
- name: SonarCloud analysis
24+
env:
25+
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
26+
run: >
27+
mvn sonar:sonar -B
28+
-Dsonar.projectKey=RandomCodeSpace_code-iq-java
29+
-Dsonar.organization=randomcodespace
30+
-Dsonar.host.url=https://sonarcloud.io

.gitignore

Lines changed: 15 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,20 @@
1-
# Python
2-
__pycache__/
3-
*.py[cod]
4-
*$py.class
5-
*.so
6-
*.egg-info/
7-
*.egg
8-
.eggs/
9-
dist/
10-
build/
11-
sdist/
12-
wheels/
13-
*.whl
14-
15-
# Virtual environments
16-
.venv/
17-
venv/
18-
env/
19-
ENV/
20-
21-
# Testing
22-
.pytest_cache/
23-
.coverage
24-
htmlcov/
25-
.tox/
26-
.nox/
1+
# Java build
2+
target/
3+
*.class
4+
*.jar
5+
!src/main/resources/static/js/vendor/*.js
6+
.classpath
7+
.project
8+
.settings/
9+
.factorypath
10+
*.iml
2711

2812
# IDE
2913
.idea/
3014
.vscode/
3115
*.swp
3216
*.swo
3317
*~
34-
.project
35-
.settings/
3618

3719
# OS
3820
.DS_Store
@@ -41,7 +23,7 @@ Thumbs.db
4123
# Project
4224
.osscodeiq/
4325
.superpowers/
44-
docs/superpowers/
26+
.code-intelligence/
4527
.code_intelligence_cache*/
4628
*.db
4729
*.db-wal
@@ -56,7 +38,10 @@ docs/superpowers/
5638
# Logs
5739
*.log
5840

41+
# Frontend
42+
src/main/frontend/node_modules/
43+
src/main/frontend/node/
44+
5945
# Distribution
6046
*.tar.gz
6147
*.zip
62-
pytest-of-dev/

0 commit comments

Comments
 (0)