Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
29f266e
wip java support
misrasaurabh1 Jan 30, 2026
cbb532f
add Java code to optimize with tests
HeshamHM28 Jan 30, 2026
a4ee9eb
add Class and Proxy type handlers to Serializer
HeshamHM28 Jan 30, 2026
1e0236b
Fix Map key collision
HeshamHM28 Jan 30, 2026
06353ea
e2e working java
misrasaurabh1 Jan 30, 2026
b050b65
Merge remote-tracking branch 'origin/omni-java' into omni-java
misrasaurabh1 Jan 30, 2026
045b4dd
make tests do full string equality check
misrasaurabh1 Jan 30, 2026
c35ce69
fix code context extraction bugs
misrasaurabh1 Jan 31, 2026
f201e66
syntax error for code extraction is not allowed
misrasaurabh1 Jan 31, 2026
e8c5227
Merge branch 'main' into omni-java
misrasaurabh1 Jan 31, 2026
090e775
thorough tests for code replacement
misrasaurabh1 Jan 31, 2026
c53c20a
Merge remote-tracking branch 'origin/omni-java' into omni-java
misrasaurabh1 Jan 31, 2026
d886de3
fix instrumentation
misrasaurabh1 Jan 31, 2026
60fefbc
more tests
misrasaurabh1 Jan 31, 2026
77cddec
progress on instrumentation of java code
misrasaurabh1 Jan 31, 2026
c542b03
feat: add JaCoCo test coverage support for Java optimization
misrasaurabh1 Jan 31, 2026
0a2f170
fix: improve Java coverage support and config parsing
misrasaurabh1 Jan 31, 2026
d2050b1
fix: improve JaCoCo plugin insertion for complex Maven pom.xml files
misrasaurabh1 Jan 31, 2026
3fdebd3
feat: add multi-module Maven project support for Java tests
misrasaurabh1 Jan 31, 2026
a594ff2
feat: add JUnit 4/TestNG support for Java test framework detection
misrasaurabh1 Jan 31, 2026
1858044
fix: improve Java class name extraction regex to avoid false matches
misrasaurabh1 Jan 31, 2026
f67057d
fix: improve Java test file handling and JaCoCo coverage for multi-mo…
misrasaurabh1 Jan 31, 2026
ee06331
Merge pull request #1224 from codeflash-ai/java-coverage-support
misrasaurabh1 Jan 31, 2026
b1d28c4
fix: handle NOT_FOUND coverage status in Java multi-module projects
misrasaurabh1 Feb 1, 2026
c299d99
Merge pull request #1229 from codeflash-ai/fix-java-coverage-critic
misrasaurabh1 Feb 1, 2026
40ae0d2
Optimize get_optimized_code_for_module
codeflash-ai[bot] Feb 1, 2026
41b08a9
Merge pull request #1240 from codeflash-ai/codeflash/optimize-pr1199-…
misrasaurabh1 Feb 1, 2026
051d1b6
feat: add inner loop and compile-once-run-many optimization for Java …
misrasaurabh1 Feb 1, 2026
578b737
fix: enable stdout capture in JUnit Console Launcher XML reports
misrasaurabh1 Feb 1, 2026
f6f0fe2
Merge pull request #1245 from codeflash-ai/java-benchmark-inner-loop
misrasaurabh1 Feb 2, 2026
3f53302
fix: improve multi-module detection and add JUnit 4 fallback
misrasaurabh1 Feb 2, 2026
79fbd2b
feat: support Java optimizations with static fields and helper methods
misrasaurabh1 Feb 2, 2026
9075ad2
fix: continue benchmark looping when some tests fail but timing marke…
misrasaurabh1 Feb 2, 2026
c9503e2
fix: handle overloaded Java methods correctly in code replacement
misrasaurabh1 Feb 2, 2026
14dc320
fix: handle Java overloaded methods and class members correctly
misrasaurabh1 Feb 2, 2026
c332a22
fix: pass function_to_optimize for precise overload matching
misrasaurabh1 Feb 2, 2026
6ccb9e8
fix: handle null message in JUnit test result parsing
misrasaurabh1 Feb 2, 2026
9997d34
fix: reduce Java inner_iterations to prevent parsing hang
misrasaurabh1 Feb 2, 2026
af095c7
fix: cache Java fallback stdout parsing to avoid O(n²) complexity
misrasaurabh1 Feb 2, 2026
07695a4
fix: add security and validation improvements to Java implementation
Feb 2, 2026
5dd3cdb
test: add comprehensive security tests for Java implementation
Feb 2, 2026
47eef86
feat: add import-based test discovery for Java
misrasaurabh1 Feb 2, 2026
dc52f4d
fix: comprehensive improvements to Java test discovery
misrasaurabh1 Feb 2, 2026
906cd0c
Merge pull request #1267 from codeflash-ai/fix/java-security-improvem…
HeshamHM28 Feb 2, 2026
5c0a9e7
fix: add pom.xml to java_maven test fixture
misrasaurabh1 Feb 2, 2026
d714e54
Merge pull request #1268 from codeflash-ai/fix-java-test-discovery
misrasaurabh1 Feb 3, 2026
85158b0
fix: update Java Comparator to read from test_results table
mashraf-222 Feb 3, 2026
3670e7a
Merge pull request #1272 from codeflash-ai/fix/java-comparator-read-t…
misrasaurabh1 Feb 3, 2026
665895c
test: add integration tests for test_results schema validation
mashraf-222 Feb 3, 2026
0c6f6f5
fix: add JSON-aware comparison to Python comparator fallback
mashraf-222 Feb 3, 2026
1765c9b
Merge pull request #1276 from codeflash-ai/fix/java-comparator-json-c…
KRRT7 Feb 3, 2026
a9fcddd
Revert "fix: add JSON-aware comparison to Python comparator fallback"
mashraf-222 Feb 3, 2026
c412870
Merge pull request #1278 from codeflash-ai/revert-1276-fix/java-compa…
mashraf-222 Feb 3, 2026
4bd871a
fix: avoid dependency conflicts in Java behavior instrumentation
misrasaurabh1 Feb 3, 2026
a00eb39
feat: add Java end-to-end tests and CI workflow
misrasaurabh1 Feb 3, 2026
7fc14fd
Merge pull request #1273 from codeflash-ai/test/java-comparator-test-…
mashraf-222 Feb 3, 2026
520a1ff
fix: resolve merge conflict and standardize Java to use FunctionToOpt…
misrasaurabh1 Feb 3, 2026
c40798f
Merge branch 'omni-java' of github.com:codeflash-ai/codeflash into om…
misrasaurabh1 Feb 3, 2026
c1128eb
fix: resolve circular import in env_utils by deferring registry import
misrasaurabh1 Feb 3, 2026
c5c56e7
Fix Java test path duplication when tests_root includes package path
HeshamHM28 Feb 3, 2026
5627ea9
Merge remote-tracking branch 'origin/main' into omni-java
misrasaurabh1 Feb 3, 2026
f862cb2
Add check for codeflash.toml
HeshamHM28 Feb 3, 2026
f73c673
Merge pull request #1287 from codeflash-ai/fix/codeflash-toml-config-…
HeshamHM28 Feb 3, 2026
512f9d5
Update codeflash/languages/java/import_resolver.py
misrasaurabh1 Feb 3, 2026
c587c47
fix: skip formatter check for Java projects
misrasaurabh1 Feb 3, 2026
f9c59b6
Optimize _add_behavior_instrumentation
codeflash-ai[bot] Feb 3, 2026
9b13db1
Merge branch 'main' into omni-java
misrasaurabh1 Feb 3, 2026
e86f21e
Merge pull request #1294 from codeflash-ai/codeflash/optimize-pr1199-…
misrasaurabh1 Feb 3, 2026
31c90f0
feat: implement Java assertion removal transformer
misrasaurabh1 Feb 3, 2026
5c61000
Merge pull request #1282 from codeflash-ai/fix/java-test-path-duplica…
HeshamHM28 Feb 3, 2026
3eb1179
Merge branch 'omni-java' into feat/java-remove-asserts-transformer
misrasaurabh1 Feb 3, 2026
9e4172e
fix: use correct variable name in JS/TS instrumentation log
misrasaurabh1 Feb 3, 2026
15585c2
fix: handle new ClassName().method() style calls in assertion removal
misrasaurabh1 Feb 3, 2026
2fd26ba
Merge pull request #1295 from codeflash-ai/feat/java-remove-asserts-t…
misrasaurabh1 Feb 3, 2026
7b72a7e
fix: prevent optimized code from one file being applied to another file
misrasaurabh1 Feb 3, 2026
5b65b27
fix: increase Java test timeout from 15s to 120s
mashraf-222 Feb 3, 2026
d69b8c5
fix: add Java patterns to instrumented test file cleanup
mashraf-222 Feb 3, 2026
1b911c0
fix: handle numbered suffixes in Java instrumented test files
mashraf-222 Feb 3, 2026
a582fa6
fix: set tests_project_rootdir to tests_root for Java projects
mashraf-222 Feb 4, 2026
65318e2
Merge pull request #1338 from codeflash-ai/fix/java-instrumented-test…
mashraf-222 Feb 4, 2026
1ee6ca8
debug: add logging to investigate empty test filter issue
mashraf-222 Feb 4, 2026
4ced2fb
feat: Add verbose logging for Java optimization debugging
HeshamHM28 Feb 4, 2026
2c48e9c
feat: Add verbose logging for existing instrumented tests
HeshamHM28 Feb 4, 2026
a23d0ca
fix: set tests_project_rootdir to tests_root for Java
mashraf-222 Feb 4, 2026
3e8dfb8
fix: prevent Maven running all tests + fix TestFile type annotation
mashraf-222 Feb 4, 2026
aa718c8
chore: remove documentation markdown files from PR
mashraf-222 Feb 4, 2026
7a7bf32
refactor: use DEBUG_MODE from console.py for verbose logging
HeshamHM28 Feb 4, 2026
2ad731d
style: fix linting and formatting issues in function_optimizer.py
github-actions[bot] Feb 4, 2026
9e81b2b
style: apply linting and formatting fixes
github-actions[bot] Feb 4, 2026
dbb26df
Merge pull request #1337 from codeflash-ai/fix/java-test-timeout-issue
misrasaurabh1 Feb 4, 2026
99b8b8e
Merge branch 'omni-java' into feature/java-verbose-logging
misrasaurabh1 Feb 4, 2026
610e63c
Merge pull request #1348 from codeflash-ai/feature/java-verbose-logging
misrasaurabh1 Feb 4, 2026
95cc603
Merge branch 'main' into omni-java
KRRT7 Feb 4, 2026
0c07949
WIP in kryo
HeshamHM28 Feb 5, 2026
7322078
Merge pull request #1345 from codeflash-ai/debug/java-test-filter
mashraf-222 Feb 5, 2026
e88730e
Merge pull request #1341 from codeflash-ai/fix/java-tests-project-roo…
mashraf-222 Feb 5, 2026
f681e22
refactor
HeshamHM28 Feb 5, 2026
fdb2668
fix: route Java/JavaScript/TypeScript to Optimizer instead of Python …
mashraf-222 Feb 5, 2026
a9f3e80
Merge pull request #1398 from codeflash-ai/fix/java-tracer-routing
mashraf-222 Feb 5, 2026
0ff54b5
better unit test discovery java
misrasaurabh1 Feb 6, 2026
81523f3
Merge remote-tracking branch 'origin/omni-java' into omni-java
misrasaurabh1 Feb 6, 2026
e958e4e
optimize for performance
misrasaurabh1 Feb 6, 2026
0e566c9
Fix insturmentation Bugs
HeshamHM28 Feb 6, 2026
1943f75
Merge branch 'omni-java' into feat/kryo-serialization
HeshamHM28 Feb 6, 2026
45043f7
fix: remove duplicate _get_method_call_pattern function definition
github-actions[bot] Feb 6, 2026
2670fd2
fix: auto-format with prek
Feb 6, 2026
2725be0
Merge pull request #1390 from codeflash-ai/feat/kryo-serialization
HeshamHM28 Feb 6, 2026
decb27b
fix: correct return value order in Java test_runner for coverage
aseembits93 Feb 6, 2026
9558bb6
Merge pull request #1417 from codeflash-ai/fix/java-coverage-return-o…
aseembits93 Feb 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions .github/workflows/java-e2e-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: Java E2E Tests

on:
push:
branches:
- main
- omni-java
paths:
- 'codeflash/languages/java/**'
- 'tests/test_languages/test_java*.py'
- 'code_to_optimize/java/**'
- '.github/workflows/java-e2e-tests.yml'
pull_request:
paths:
- 'codeflash/languages/java/**'
- 'tests/test_languages/test_java*.py'
- 'code_to_optimize/java/**'
- '.github/workflows/java-e2e-tests.yml'

concurrency:
group: ${{ github.workflow }}-${{ github.ref_name }}
cancel-in-progress: true

jobs:
java-e2e:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}

- name: Set up JDK 11
uses: actions/setup-java@v4
with:
java-version: '11'
distribution: 'temurin'
cache: maven

- name: Install uv
uses: astral-sh/setup-uv@v6

- name: Set up Python environment
run: |
uv venv --seed
uv sync

- name: Verify Java installation
run: |
java -version
mvn --version

- name: Build Java sample project
run: |
cd code_to_optimize/java
mvn compile -q

- name: Run Java sample project tests
run: |
cd code_to_optimize/java
mvn test -q

- name: Run Java E2E tests
run: |
uv run pytest tests/test_languages/test_java_e2e.py -v --tb=short

- name: Run Java unit tests
run: |
uv run pytest tests/test_languages/test_java/ -v --tb=short -x
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,10 @@ cython_debug/
.aider*
/js/common/node_modules/
*.xml
# Allow pom.xml in test fixtures for Maven project detection
!tests/test_languages/fixtures/**/pom.xml
# Allow pom.xml in Java sample project
!code_to_optimize/java/pom.xml
*.pem

# Ruff cache
Expand Down
6 changes: 6 additions & 0 deletions code_to_optimize/java/codeflash.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Codeflash configuration for Java project

[tool.codeflash]
module-root = "src/main/java"
tests-root = "src/test/java"
formatter-cmds = []
67 changes: 67 additions & 0 deletions code_to_optimize/java/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.example</groupId>
<artifactId>codeflash-java-sample</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>

<name>Codeflash Java Sample Project</name>
<description>Sample Java project for testing Codeflash optimization</description>

<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.jupiter.version>5.10.0</junit.jupiter.version>
</properties>

<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<!-- SQLite JDBC for Codeflash instrumentation -->
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.42.0.0</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.1.2</version>
<configuration>
<includes>
<include>**/*Test.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>
</project>
117 changes: 117 additions & 0 deletions code_to_optimize/java/src/main/java/com/example/Algorithms.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
package com.example;

import java.util.ArrayList;
import java.util.List;

/**
* Collection of algorithms.
*/
public class Algorithms {

/**
* Calculate Fibonacci number using recursive approach.
*
* @param n The position in Fibonacci sequence (0-indexed)
* @return The nth Fibonacci number
*/
public long fibonacci(int n) {
if (n <= 1) {
return n;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}

/**
* Find all prime numbers up to n.
*
* @param n Upper bound for finding primes
* @return List of all prime numbers <= n
*/
public List<Integer> findPrimes(int n) {
List<Integer> primes = new ArrayList<>();
for (int i = 2; i <= n; i++) {
if (isPrime(i)) {
primes.add(i);
}
}
return primes;
}

/**
* Check if a number is prime using trial division.
*
* @param num Number to check
* @return true if num is prime
*/
private boolean isPrime(int num) {
if (num < 2) return false;
for (int i = 2; i < num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}

/**
* Find duplicates in an array using nested loops.
*
* @param arr Input array
* @return List of duplicate elements
*/
public List<Integer> findDuplicates(int[] arr) {
List<Integer> duplicates = new ArrayList<>();
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j] && !duplicates.contains(arr[i])) {
duplicates.add(arr[i]);
}
}
}
return duplicates;
}

/**
* Calculate factorial recursively.
*
* @param n Number to calculate factorial for
* @return n!
*/
public long factorial(int n) {
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
}

/**
* Concatenate strings in a loop using String concatenation.
*
* @param items List of strings to concatenate
* @return Concatenated result
*/
public String concatenateStrings(List<String> items) {
String result = "";
for (String item : items) {
result = result + item + ", ";
}
if (result.length() > 2) {
result = result.substring(0, result.length() - 2);
}
return result;
}

/**
* Calculate sum of squares using a loop.
*
* @param n Upper bound
* @return Sum of squares from 1 to n
*/
public long sumOfSquares(int n) {
long sum = 0;
for (int i = 1; i <= n; i++) {
sum += (long) i * i;
}
return sum;
}
}
Loading
Loading