Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
37cda5b
Remove deprecated StringConcatenateAssignmentNode
wmdietl Apr 5, 2022
8c25e92
Update stubparser reference
wmdietl Apr 6, 2022
8f09aea
Enable Java 17 support
wmdietl May 12, 2022
adafbc0
Keep ub/lb when calling removeAnnotation (#397)
al3xliu Jun 6, 2022
c3e0066
Only set non-null bound annotations (#401)
al3xliu Jun 13, 2022
a61ae54
Use standalone z3-turnkey dependency instead of jar files (#402)
zcai1 Jun 15, 2022
3692226
Merge branch 'master' into update-3.21.4-eisop1
wmdietl Jun 19, 2022
a3c7106
Suppress deprecation warning
wmdietl Jun 19, 2022
92dbdfb
Update to eisop master 2022-07-03 (#395)
wmdietl Jul 4, 2022
b06a055
Update maven and gradle (#405)
zcai1 Aug 4, 2022
b35c413
Update to setup-java@v2 (#384)
wmdietl Aug 4, 2022
2d5e5f4
Bump plume-util from 1.5.8 to 1.5.9 (#406)
dependabot[bot] Aug 4, 2022
360dc38
Bump gson from 2.9.0 to 2.9.1 (#407)
dependabot[bot] Aug 4, 2022
f0ffb21
Use the preferred SystemUtil.jreVersion
wmdietl Aug 16, 2022
577c028
Update stubparser version number
wmdietl Aug 16, 2022
477a70d
eisop release 3.25.0-eisop1 (#408)
wmdietl Sep 8, 2022
9832ddc
Use EISOP AFU version
wmdietl Sep 8, 2022
ca04710
Update to gradle 7.5.1
wmdietl Sep 8, 2022
07ca725
Bump z3-turnkey from 4.8.17 to 4.11.2 (#409)
dependabot[bot] Sep 9, 2022
71db3ab
Update stubparser version
wmdietl Nov 6, 2022
366610b
Adapt to AFU package changes
wmdietl Nov 6, 2022
7ecba30
Replace use of deprecated method
wmdietl Nov 6, 2022
1771984
Update github actions versions
wmdietl Nov 6, 2022
71d3117
Update to gradle 8.0.1 (#415)
wmdietl Mar 1, 2023
ea11104
Update to gradle 8.1.1 (#419)
wmdietl Apr 25, 2023
a2883e7
Remove use of no-longer-existing jdk8.jar file (#422)
aosen-xiong Aug 21, 2023
a124202
Update CI link (#420)
aosen-xiong Aug 21, 2023
695b92c
Update links to the manual and fix typos (#421)
aosen-xiong Aug 21, 2023
bcb8e11
Update to EISOP 3.32-eisop1 from 3.28-eisop1 (#435)
aosen-xiong Feb 1, 2024
7b587d4
Remove use of deprecated method and use the one in CF (#438)
aosen-xiong Mar 22, 2024
f804e02
Update to EISOP 3.34-eisop1 from 3.32-eisop1 (#437)
aosen-xiong Mar 28, 2024
e740339
Update to EISOP 3.39-eisop1 from 3.34-eisop1 (#439)
aosen-xiong Apr 7, 2024
436378a
Update to EISOP 3.40-eisop1 from 3.39-eisop1 (#441)
aosen-xiong Apr 11, 2024
71cee10
Use unqualified name in `defaultErrorMessage` (#445)
aosen-xiong Apr 11, 2024
938898f
Override upperBound instead of leastUpperBound (#447)
aosen-xiong Apr 20, 2024
f279c9b
Replace deprecated script with gradlew (#440)
aosen-xiong Apr 20, 2024
214612f
Use spotless and reformat code (#446)
aosen-xiong Apr 21, 2024
f0b3c9f
Use eisop plume lib (#448)
aosen-xiong Jun 23, 2024
d4ca1ed
Use git-scripts in addition to plume-scripts (#450)
aosen-xiong Jun 27, 2024
2b6e1d9
Update to gradle v8.10 (#452)
aosen-xiong Aug 29, 2024
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
12 changes: 6 additions & 6 deletions .ci-build-without-test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,18 @@ else
export JAVA_HOME=${JAVA_HOME:-$(dirname $(dirname $(readlink -f $(which javac))))}
fi

if [ -d "/tmp/plume-scripts" ] ; then
git -C /tmp/plume-scripts pull -q
if [ -d "/tmp/git-scripts" ] ; then
git -C /tmp/git-scripts pull -q
else
git -C /tmp clone --depth 1 -q https://github.com/plume-lib/plume-scripts.git
git -C /tmp clone --depth 1 -q https://github.com/eisop-plume-lib/git-scripts.git
fi

export AFU="${AFU:-../annotation-tools/annotation-file-utilities}"
# Don't use `AT=${AFU}/..` which causes a git failure.
AT=$(dirname "${AFU}")

## Build annotation-tools (Annotation File Utilities)
/tmp/plume-scripts/git-clone-related opprop annotation-tools "${AT}"
/tmp/git-scripts/git-clone-related opprop annotation-tools "${AT}"
if [ ! -d ../annotation-tools ] ; then
ln -s "${AT}" ../annotation-tools
fi
Expand All @@ -39,10 +39,10 @@ export CHECKERFRAMEWORK="${CHECKERFRAMEWORK:-$(pwd -P)/../checker-framework}"
export PATH=$AFU/scripts:$JAVA_HOME/bin:$PATH

## Build Checker Framework
/tmp/plume-scripts/git-clone-related opprop checker-framework ${CHECKERFRAMEWORK}
/tmp/git-scripts/git-clone-related opprop checker-framework ${CHECKERFRAMEWORK}

# This also builds annotation-tools
(cd $CHECKERFRAMEWORK && checker/bin-devel/build.sh downloadjdk)
(cd $CHECKERFRAMEWORK && ./gradlew assembleForJavac)

# Finally build checker-framework-inference
./gradlew dist && ./gradlew testLibJar
Expand Down
2 changes: 1 addition & 1 deletion .ci-build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ if [[ "${GROUP}" == downstream* && "${SLUGOWNER}" == "opprop" ]]; then
clone_downstream () {
DOWNSTREAM_PROJ="$(pwd -P)/../$1"
echo "clone downstream to: ${DOWNSTREAM_PROJ}"
COMMAND="/tmp/plume-scripts/git-clone-related opprop $1 ${DOWNSTREAM_PROJ}"
COMMAND="/tmp/git-scripts/git-clone-related opprop $1 ${DOWNSTREAM_PROJ}"
echo "Running: ($COMMAND)"
(eval $COMMAND)
echo "... done: ($COMMAND)"
Expand Down
20 changes: 14 additions & 6 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,30 +14,35 @@ jobs:
fail-fast: false
matrix:
group: [ cfi-tests, downstream-ontology, downstream-security-demo, downstream-universe ]
jdk: [ 8, 11 ]
jdk: [ 8, 11, 17 ]
runs-on: ubuntu-latest
steps:
- name: Install dependencies
run: |
sudo apt update
sudo apt install ant cpp gradle jq libcurl3-gnutls make maven mercurial python3-requests unzip wget binutils build-essential
sudo apt install ant cpp gradle jq libcurl3-gnutls make mercurial python3-requests unzip wget binutils build-essential
- name: Set up Maven
uses: stCarolas/setup-maven@v4.5
with:
maven-version: 3.8.6
- name: Pull Request Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
ref: ${{github.event.pull_request.head.ref}}
repository: ${{github.event.pull_request.head.repo.full_name}}
if: github.head_ref != ''
- name: Push Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
if: github.head_ref == ''
- name: Set up Python 3
uses: actions/setup-python@v2
uses: actions/setup-python@v4
with:
python-version: '3.8'
- name: Set up Java
uses: actions/setup-java@v1
uses: actions/setup-java@v3
with:
java-version: ${{ matrix.jdk }}
distribution: 'temurin'
- name: Dump GitHub context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
Expand All @@ -46,6 +51,9 @@ jobs:
run: |
python3 -m pip install --upgrade pip
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Spotless Check
if: matrix.jdk == 11 || matrix.jdk == 17
run: ./gradlew spotlessCheck
- name: Build
run: |
export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
Expand Down
21 changes: 9 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
Continuous integration status of master:
![CFI status](https://github.com/opprop/checker-framework-inference/workflows/CI/badge.svg)

Checker Framework Inference
Checker Framework Inference [![Build Status](https://github.com/opprop/checker-framework-inference/workflows/CI/badge.svg)](https://github.com/opprop/checker-framework-inference/actions/workflows/main.yml)
===========================

This project is a general type inference framework,
built upon the [Checker Framework](https://checkerframework.org/).
built upon the [EISOP Checker Framework](https://eisop.github.io/).

Given a program with no type annotations, Checker Framework Inference produces a program with type annotations.

Expand All @@ -31,7 +28,7 @@ Configure Eclipse to edit Checker Framework Inference

The instructions here assumes you have cloned this project into a folder called `checker-framework-inference`.

1) Follow the instructions in the [Checker Framework Manual](https://checkerframework.org/manual/#building-eclipse)
1) Follow the instructions in the [EISOP Checker Framework Manual](https://eisop.github.io/cf/manual/manual.html#eclipse)
to download, build, and configure Eclipse to edit the Checker Framework. The Checker Framework Inference Eclipse
project depends on the eclipse projects from Checker Framework.

Expand Down Expand Up @@ -95,7 +92,7 @@ To test the build:
Execution
---------

Verify you have all of the requirements.
Verify you have all the requirements.

````
./scripts/inference
Expand All @@ -119,7 +116,7 @@ Available options are [INFER, TYPECHECK, ROUNDTRIP, ROUNDTRIP_TYPECHECK]
Generates and solves the constraints and writes the results to default.jaif file

* `TYPECHECK`:
Typechecks the existin code
Typechecks the existing code

* `ROUNDTRIP`:
Generates and solves the constraints and then inserts the results
Expand All @@ -146,10 +143,10 @@ The classpath that is required by target program.
`checkers.inference.solver.PropagationSolver` and `checkers.inference.solver.SolverEngine` are real solvers
at the moment.

Omiting the solver will create an output that numbers all of the
Omitting the solver will create an output that numbers all the
annotation positions in the program.

`checkers.inference.solver.DebugSolver` will output all of the
`checkers.inference.solver.DebugSolver` will output all the
constraints generated.


Expand Down Expand Up @@ -178,7 +175,7 @@ Specifies what concrete solver is going to use.

* `LogiQL`: Encodes constraints as statements of LogiQL language and use LogicBlox to solve.

* `Z3` with bit vector theory: Encodes constraints as Max-SMT problem with bit vectory theory, and use Z3 library to solve.
* `Z3` with bit vector theory: Encodes constraints as Max-SMT problem with bit vector theory, and use Z3 library to solve.


`MaxSat` solver is used by default.
Expand All @@ -187,7 +184,7 @@ Specifies what concrete solver is going to use.
Specifies whether to separate constraints into multiple components through constraint graph and solve them respectively. The default value is true.

* `solveInParallel`
If constraints are separated by constraint graph, this arguments indicates whether to solve the components in parallel (multithreading). The default value is true.
If constraints are separated by constraint graph, this argument indicates whether to solve the components in parallel (multithreading). The default value is true.

* `collectStatistics`
Specifies whether to collect statistic with respect to timing, size of constraints, size of encoding, etc. The default value is false.
Expand Down
Loading