diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml new file mode 100644 index 0000000..b002be7 --- /dev/null +++ b/.github/workflows/validate.yml @@ -0,0 +1,28 @@ +name: ะก++ division by zero validation + +on: + push: + branches: [ "master" ] + paths: + - examples/** + pull_request: + branches: [ "master" ] + paths: + - examples/** + +jobs: + validate: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + - name: Validate + run: bash examples/run.sh examples/div-by-zero.c + - name: Upload results as artifact + uses: actions/upload-artifact@v3 + with: + name: polystat-eo-out + path: polystat-eo-out.txt diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 0000000..b5bbb2d --- /dev/null +++ b/examples/README.md @@ -0,0 +1,21 @@ + + +[![EO principles respected here](https://www.elegantobjects.org/badge.svg)](https://www.elegantobjects.org) +[![DevOps By Rultor.com](http://www.rultor.com/b/polystat/far)](http://www.rultor.com/p/polystat/far) +[![We recommend IntelliJ IDEA](https://www.elegantobjects.org/intellij-idea.svg)](https://www.jetbrains.com/idea/) + +[![CI checks](https://github.com/polystat/far/actions/workflows/mvn.yml/badge.svg)](https://github.com/polystat/far/actions/workflows/mvn.yml) +[![PDD status](http://www.0pdd.com/svg?name=polystat/far)](http://www.0pdd.com/p?name=polystat/far) +[![codecov](https://codecov.io/gh/polystat/far/branch/master/graph/badge.svg)](https://codecov.io/gh/polystat/far) + +[![Javadoc](http://www.javadoc.io/badge/org.polystat/far.svg)](http://www.javadoc.io/doc/org.polystat/far) +[![License](https://img.shields.io/badge/license-MIT-green.svg)](https://github.com/polystat/far/blob/master/LICENSE.txt) +[![Maven Central](https://img.shields.io/maven-central/v/org.polystat/far.svg)](https://maven-badges.herokuapp.com/maven-central/org.polystat/far) +[![Hits-of-Code](https://hitsofcode.com/github/polystat/far)](https://hitsofcode.com/view/github/polystat/far) +![Lines of code](https://img.shields.io/tokei/lines/github/polystat/far) + +To start validating C/C++ file and checking it for division by zero error, just do: +```shell +bash run.sh {your C/C++ file path} +``` + diff --git a/examples/div-by-zero.c b/examples/div-by-zero.c new file mode 100644 index 0000000..840544e --- /dev/null +++ b/examples/div-by-zero.c @@ -0,0 +1,3 @@ +int check(int x) { + return 42 / x; +} \ No newline at end of file diff --git a/examples/org/eolang/global.eo b/examples/org/eolang/global.eo new file mode 100644 index 0000000..9303401 --- /dev/null +++ b/examples/org/eolang/global.eo @@ -0,0 +1,6 @@ +package examples.org.eolang + +[x] > global + div. > @ + 42 + x diff --git a/examples/run.sh b/examples/run.sh new file mode 100644 index 0000000..cf5cdaf --- /dev/null +++ b/examples/run.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +set -euox pipefail +file=$1 + +echo "Pull c2eo Docker image" +mkdir out +docker pull yegor256/c2eo:0.1.24 +echo "Finished pulling" + +echo "Run c2eo Docker image" +docker run -v $(pwd):/eo yegor256/c2eo:0.1.24 $file out/global.eo +echo "Finished running" + +echo "Check out/global.eo" +ls -la out +cat out/global.eo +echo "Finished cheking" + +echo "Copy c2o.cooperators" +mkdir out/c2eo +git clone "https://github.com/polystat/c2eo.git" --branch master +cp -r c2eo/project/eo-lib out/c2eo +echo "Finished copy" + +echo "Removing goto" +# Download Dejump jar file +curl -L -o dejump-0.0.2-jar-with-dependencies.jar "https://repo1.maven.org/maven2/org/eolang/dejump/0.0.2/dejump-0.0.2-jar-with-dependencies.jar" +echo "Dejump jar was downloaded" +java -jar dejump-0.0.2-jar-with-dependencies.jar --eo out/global.eo +echo "GOTO was removed, check the result: " +cat out/generated/global_transformed.eo +echo "Rename file" +mv out/generated/global_transformed.eo out/generated/global.eo +echo "Finished Removing" + +echo "Run Polystat Jar" +# Run Polystat (EO) and save reports to "results" folder +curl -L -o polystat.jar "https://github.com/polystat/polystat-cli/releases/download/v0.1.11/polystat.jar" +echo "Polystat (EO) analysis has started" +touch polystat-eo-out.txt +java -jar polystat.jar eo --in examples/org/eolang --to file=polystat-eo-out.txt --sarif +#java -jar polystat.jar eo --in out/generated --to file=polystat-eo-out.txt --sarif +echo "Polystat (EO) analysis has finished"o polystat.jar "https://github.com/polystat/polystat-cli/releases/download/v0.1.11/polystat.jar" +echo "Finished running" + +echo "Check polystat-eo-out.txt" +cat polystat-eo-out.txt