diff --git a/.github/workflows/static-code-analysis.yml b/.github/workflows/static-code-analysis.yml new file mode 100644 index 0000000..50312c7 --- /dev/null +++ b/.github/workflows/static-code-analysis.yml @@ -0,0 +1,43 @@ +name: Static Code Analysis + +on: [push] + +jobs: + build_and_test: + + runs-on: ubuntu-latest + + steps: + + - uses: actions/checkout@v1 + - name: install cppcheck and run tests + run: | + sudo apt-get install -y cppcheck + cd ./ContinousIntegration + chmod +x ./run_c_static_code_analysis.sh + ls run_c_static_code_analysis.sh + ./run_c_static_code_analysis.sh + + - uses: actions/checkout@v1 + - name: install flake8 and run tests + if: always() + run: | + sudo pip install flake8 flake8-html + cd ./ContinousIntegration + chmod +x ./run_python_static_code_analysis.sh + ls + ./run_python_static_code_analysis.sh + + - name: Archive Python results + uses: actions/upload-artifact@v2 + if: always() + with: + name: Report for Python sources + path: ./ContinousIntegration/python_lint_repport/ + + - name: Archive C results + uses: actions/upload-artifact@v2 + if: always() + with: + name: Report for C sources + path: ./ContinousIntegration/C_Lint_*.txt \ No newline at end of file diff --git a/ContinousIntegration/README.md b/ContinousIntegration/README.md new file mode 100644 index 0000000..ab575ef --- /dev/null +++ b/ContinousIntegration/README.md @@ -0,0 +1,3 @@ +# Continous Integration + +This folder contains scripts run by GitHub continuous integration module. These scripts should be also run locally before pull request. diff --git a/ContinousIntegration/run_c_static_code_analysis.sh b/ContinousIntegration/run_c_static_code_analysis.sh new file mode 100644 index 0000000..4c3d570 --- /dev/null +++ b/ContinousIntegration/run_c_static_code_analysis.sh @@ -0,0 +1,13 @@ +cppcheck --enable=all --inline-suppr --force --quiet --error-exitcode=1 ../Software/Firmware/Inc/* ../Software/Firmware/Src/* 2>C_Lint_ReportFull.txt + +# look for errors in gm_files (those are aplicatin files where we are interested in errors) +# store them to separate log ans show them on stdout +grep -F '[../Software/NUCLEO-F091RC/Src/gm_' C_Lint_ReportFull.txt > C_Lint_ReportApplicationOnly.txt +cat C_Lint_ReportApplicationOnly.txt + +# set exit code to ok if no errors were found in aplication files +if [ $(cat C_Lint_ReportApplicationOnly.txt | wc -l) -eq 0 ]; then + true +else + false +fi \ No newline at end of file diff --git a/ContinousIntegration/run_python_static_code_analysis.sh b/ContinousIntegration/run_python_static_code_analysis.sh new file mode 100644 index 0000000..ba9dd9f --- /dev/null +++ b/ContinousIntegration/run_python_static_code_analysis.sh @@ -0,0 +1 @@ +flake8 --format=html --htmldir=python_lint_repport ../Software/DataAcquisition/ \ No newline at end of file