diff --git a/.github/workflows/run_infer.yml b/.github/workflows/run_infer.yml new file mode 100644 index 000000000000..f587a1b6e2e4 --- /dev/null +++ b/.github/workflows/run_infer.yml @@ -0,0 +1,60 @@ +--- +name: run_infer + +'on': + workflow_dispatch: + push: + branches: + - master + pull_request: + +jobs: + run_infer: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: 21 + distribution: 'adopt' + + - name: Set up OCaml + uses: ocaml/setup-ocaml@v3 + with: + ocaml-compiler: 5 + + - name: Get current year/weak + run: echo "year_week=$(date +'%Y_%U')" >> $GITHUB_ENV + + - name: Cache infer build + id: cache-infer + uses: actions/cache@v4 + with: + path: infer + key: ${{ runner.os }}-infer-${{ env.year_week }} + + - name: Build infer + if: steps.cache-infer.outputs.cache-hit != 'true' + run: | + cd .. + git clone https://github.com/facebook/infer.git + cd infer + ./build-infer.sh java + cp -r infer ../Java + + - name: Add infer to PATH + run: | + echo "infer/bin" >> $GITHUB_PATH + + - name: Display infer version + run: | + which infer + infer --version + + - name: Run infer + run: | + mvn clean + infer --fail-on-issue --print-logs --no-progress-bar -- mvn test +... diff --git a/.gitignore b/.gitignore index bd1d54c0900a..eb9d33c78a33 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,5 @@ local.properties gradle.properties .vscode *.log + +/infer-out/ diff --git a/.inferconfig b/.inferconfig new file mode 100644 index 000000000000..96c34a54a0d8 --- /dev/null +++ b/.inferconfig @@ -0,0 +1,27 @@ +{ + "report-block-list-path-regex": [ + "src/main/java/com/thealgorithms/ciphers/a5/CompositeLFSR.java", + "src/main/java/com/thealgorithms/conversions/RomanToInteger.java", + "src/main/java/com/thealgorithms/conversions/UnitsConverter.java", + "src/main/java/com/thealgorithms/datastructures/crdt/GCounter.java", + "src/main/java/com/thealgorithms/datastructures/crdt/PNCounter.java", + "src/main/java/com/thealgorithms/datastructures/graphs/KahnsAlgorithm.java", + "src/main/java/com/thealgorithms/datastructures/heaps/GenericHeap.java", + "src/main/java/com/thealgorithms/datastructures/lists/DoublyLinkedList.java", + "src/main/java/com/thealgorithms/datastructures/trees/CreateBinaryTreeFromInorderPreorder.java", + "src/main/java/com/thealgorithms/divideandconquer/ClosestPair.java", + "src/main/java/com/thealgorithms/dynamicprogramming/Fibonacci.java", + "src/main/java/com/thealgorithms/maths/NthUglyNumber.java", + "src/main/java/com/thealgorithms/maths/SimpsonIntegration.java", + "src/main/java/com/thealgorithms/others/Dijkstra.java", + "src/main/java/com/thealgorithms/sorts/TopologicalSort.java", + "src/main/java/com/thealgorithms/strings/AhoCorasick.java", + "src/test/java/com/thealgorithms/datastructures/caches/LRUCacheTest.java", + "src/test/java/com/thealgorithms/datastructures/lists/SkipListTest.java", + "src/test/java/com/thealgorithms/datastructures/trees/KDTreeTest.java", + "src/test/java/com/thealgorithms/datastructures/trees/LazySegmentTreeTest.java", + "src/test/java/com/thealgorithms/searches/QuickSelectTest.java", + "src/test/java/com/thealgorithms/stacks/PostfixToInfixTest.java", + "src/test/java/com/thealgorithms/strings/HorspoolSearchTest.java" + ] +}