This is a Python application that evaluates the quality of work done in the specified repositories to aid in grading the Programming II team assignments.
- README
- Testing
- Test code existence
- Test code coverage
- Packaging (Limited to Maven and Gradle)
- Packaging file existence
- Packaging file formation
- Commenting
- CheckStyle and SpotBugs
- Continuous Integration
- Travis CI, GitHub Actions or Circle CI
- Modularity
- LICENCE file existence
- CONTRIBUTING file existence
- A thorough README file
- A README file which actively uses Markdown
- Use of GitHub features (Issues, Actions, Projects etc)
- The number of contributors
- The number of commits
- Raw data from all the evaluation will be outputed to a
.csv
file which can be used for visualisation and grading
- This project uses Python Poetry for dependency management wilts including a poetry.lock file
- There are two ways you can build the project:
- Using Poetry
- Run
poetry install
- Run
- Using pip (PEP-517)
- Run
pip install -e
- Keep in mind that pip will not use the lock file to determine dependency versions, therefore issues with newer versions may surface. Also, no run instructions will be given bellow. You are on your own
- Run
- Using Poetry
- Optionally tweak the constants in
repo_evaluate\constants.py
to your liking - Run
poetry run python .\repo_evaluate\main.py <repository.txt> <output\directory>
- Replace python with your python installation name if it differs
repository.txt
should contain the repositories for evaluation each on a new line. Checktest_repositories.txt
for an exampleoutput\directory
should point to where you want the results stored
- You must have an environmental variable
GITHUB_GPG_KEY
with your GitHub Pesonal Acess Token otherwise you will hit the GitHub API limit pretty fast - PowerShell is used and must be installed (by default It's available on Windows)
- Gradle must be installed in order to evaluate Gradle builds
- The last 2 requirements are optional, if ignored Gradle and Kotlin builds will just always fail
- Outsider contributing to this repository is not open at the moment
- Gradle validation doesn't work 100% of the time. When a Gradle build fails standard error is saved to sort manually later
- Evaluation of comment coverage compared to number of methods is off. Sometimes it underestimates the number of methods in java files
- The number of contributors required is currently set as a hard number not a factor of group participants
- Unless otherwise stated all of this repository is covered by the EUROPEAN UNION PUBLIC LICENCE v. 1.2
- My permanent address is in Greece, so as per EUPL v1.2 the governing law is the Greek law
- You are required to read what is stated in the LICENCE.md before using this repository in any way