Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
051260c
wps-light support (#17)
GirZ0n Apr 3, 2021
f3d42f3
New flake8 plugins support (#18)
GirZ0n Apr 5, 2021
4b47996
Radon support (#19)
GirZ0n Apr 12, 2021
388f2fa
Requirements upgrade (#21)
GirZ0n Apr 14, 2021
eef3f41
xlsx-run-tool (#24)
dariadiatlova May 3, 2021
b14b5b9
Penalty system (#25)
GirZ0n May 5, 2021
71bc300
Penalty coefficients update (#28)
GirZ0n May 11, 2021
045deff
Update version to 1.2.0
nbirillo May 17, 2021
595f758
Merge branch 'main' into main-upd
vyahhi May 17, 2021
f9b99ea
Evaluation/code quality (#29)
nbirillo May 20, 2021
7e765fb
Rename output_format to format
GirZ0n May 30, 2021
afa44ec
Fix double quotes
GirZ0n May 30, 2021
60c93bf
Fix small issues
GirZ0n May 30, 2021
f3c2ff9
Fix small issues
GirZ0n May 30, 2021
5db1ca3
Fix double quotes
GirZ0n May 30, 2021
057031f
Fix double quotes
GirZ0n May 30, 2021
9125521
Merge branch 'main-upd' into develop
GirZ0n May 31, 2021
c5ffb19
Inspectors fix (#39)
GirZ0n May 31, 2021
b3d7c70
New category (#38)
GirZ0n May 31, 2021
1b72ce3
Merge branch 'main-upd' into develop
nbirillo May 31, 2021
aa05fc4
Dataset labeling utility (#31)
GirZ0n Jun 2, 2021
77e03b2
resolved merge conflicts
dariadiatlova Jun 3, 2021
bf40554
Merge branch 'main' into main-upd
vyahhi Jun 3, 2021
0e82bf7
Fixed trailing commas
GirZ0n Jun 3, 2021
ba15cb3
Delete create_directory function
nbirillo Jun 4, 2021
1de2aff
Delete create_directory function
nbirillo Jun 4, 2021
b69e709
Merge branch 'main-upd' into develop
nbirillo Jun 4, 2021
e7b103f
Update version
nbirillo Jun 4, 2021
a56cb28
Graph plotter (#41)
GirZ0n Jun 7, 2021
6961e87
updated whitelist to resolve merge conflicts
dariadiatlova Jun 7, 2021
1877f31
Qodana simulation model (#40)
dariadiatlova Jun 10, 2021
853939d
Qodana stat (#42)
nbirillo Jun 15, 2021
841d52b
Delete Path from setup.py
nbirillo Jun 16, 2021
af849e9
Change exit code
nbirillo Jun 16, 2021
1d1d688
Update whitelist
nbirillo Jun 16, 2021
64b6bee
Inspector statistics (#48)
nbirillo Jun 16, 2021
2ebb2e1
Fix GitHub actions (#44)
nbirillo Jun 16, 2021
baaa082
Fix Dockerfiles
nbirillo Jun 16, 2021
191948d
Install some dependencies for TeamCity
nbirillo Jun 16, 2021
59dcf8f
Merge branch 'main-upd' into develop
nbirillo Jun 16, 2021
6ced9ae
Update version in Github Actions
nbirillo Jun 16, 2021
1e18590
Reorganize dependencies and update dockerfile
nbirillo Jun 16, 2021
dacc8df
Merge remote-tracking branch 'origin/develop' into develop
nbirillo Jun 16, 2021
833c46b
History script (#47)
GirZ0n Jun 21, 2021
175c679
Fixed incorrect file name (#51)
GirZ0n Jun 21, 2021
e67b1dc
Distributed the issue categories (#53)
GirZ0n Jul 6, 2021
b729fd2
Qodana imitation model resources (#55)
dariadiatlova Jul 6, 2021
6f20e94
Small Github Actions config update (#56)
GirZ0n Jul 7, 2021
e7464c6
Whitelist for flake8-spellcheck (#57)
GirZ0n Jul 12, 2021
63aed04
PMD update (#59)
GirZ0n Jul 13, 2021
f4ab486
Small fix
GirZ0n Jul 14, 2021
2f9a983
Undo f4ab4866932de334e117943cd39f70cfed544015
GirZ0n Jul 14, 2021
5c2e08a
Checkstyle update (#60)
GirZ0n Jul 14, 2021
f90c2e6
Categorization update (#61)
GirZ0n Jul 14, 2021
1203028
New tests and documentation (#63)
GirZ0n Jul 16, 2021
554919b
Merge main into develop (#65)
nbirillo Jul 19, 2021
fb732d2
Script for getting raw issues (#66)
GirZ0n Jul 23, 2021
66c3923
Evaluation for the paper (#69)
nbirillo Jul 28, 2021
7e2ccc5
Script for extracting statistics from raw issues (#76)
GirZ0n Aug 2, 2021
db42704
Survey analysis (#84)
nbirillo Aug 2, 2021
6588dec
Issues fix (#88)
GirZ0n Aug 2, 2021
cf1eb76
Fixed get_raw_issues script (#86)
GirZ0n Aug 3, 2021
acfd3d8
Corrected dict errors and added types for Dict (#98)
nihalshetty-boop Aug 9, 2021
b198f01
User dynamics (#95)
nbirillo Aug 10, 2021
acac031
`print_review.py` refactoring (#96)
GirZ0n Aug 10, 2021
3bbdb26
User dynamics visualization (#101)
nbirillo Aug 11, 2021
852c777
Raw issues statisitcs plotter (#99)
GirZ0n Aug 13, 2021
183ab4a
Difficulty levels (#103)
GirZ0n Aug 13, 2021
128d667
Update traces and count percentage (#105)
nbirillo Aug 13, 2021
be0eb88
Issues fix (#107)
GirZ0n Aug 13, 2021
3e52d44
Raw issues statistics plotter fix (#108)
GirZ0n Aug 17, 2021
01add60
Visualization of raw issues statistics for the paper (#110)
GirZ0n Aug 19, 2021
2f4794e
Delete evaluation part (#113)
nbirillo Aug 24, 2021
e3475eb
Merged `main` into `develop` (#114)
GirZ0n Aug 26, 2021
a4f0784
Merge branch 'main' into develop
nbirillo Aug 26, 2021
a6c2405
Issues fix (#117)
GirZ0n Aug 26, 2021
1442316
Updated `README` (#119)
GirZ0n Aug 27, 2021
1c3a75f
Delete analysis part (#120)
nbirillo Aug 27, 2021
fab3503
Pylint categorization update (#121)
GirZ0n Aug 30, 2021
d762788
Detekt update (#123)
GirZ0n Aug 30, 2021
93bf94d
Issue fix (#127)
GirZ0n Aug 30, 2021
e0fb60a
Delete evaluation resources
nbirillo Sep 13, 2021
78d4f7a
Delete Intellij and spotbugs inspectors (#131)
nbirillo Sep 13, 2021
7da76b0
Fix teamcity build
nbirillo Sep 13, 2021
936f241
Delete detekt sources (#132)
nbirillo Sep 13, 2021
b1d792f
Delete springlint inspector (#133)
nbirillo Sep 13, 2021
dfaa3d9
Delete checkstyle sources (#134)
nbirillo Sep 13, 2021
a5283ee
Delete pmd sources (#135)
nbirillo Sep 13, 2021
5997bf8
Delete ses evaluation resources
nbirillo Sep 13, 2021
60edc0e
Add a guideline about tool installation (#137)
nbirillo Sep 16, 2021
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
30 changes: 28 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,23 @@ jobs:
build:
runs-on: ubuntu-latest
# Consistent with base image in Dockerfile
container: stepik/hyperstyle-base:py3.8.11-java11.0.11-node14.17.3
# container: stepik/hyperstyle-base:py3.8.11-java11.0.11-node14.17.3
container: nastyabirillo/hyperstyle:1.2.1

steps:
- name: Install git
run: |
apt-get update
apt-get -y install git

- name: Check env variables
run: |
echo $DETEKT_DIRECTORY && echo $DETEKT_VERSION
echo $CHECKSTYLE_DIRECTORY && echo CHECKSTYLE_VERSION
echo $PMD_DIRECTORY && echo PMD_VERSION

- name: Checkout
uses: actions/checkout@v1
uses: actions/checkout@v2

- name: Install requirements
run: |
Expand All @@ -22,8 +34,22 @@ jobs:
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics --exclude=.git,__pycache__,docs/source/conf.py,old,build,dist,venv,test/resources,.eggs,review.egg-info,.pytest_cache,node_modules
# TODO: change max-complexity into 10 after refactoring
# TODO: remove R504, A003, E800, E402, WPS1, WPS2, WPS3, WPS4, WPS5, WPS6, H601
flake8 . --count --max-complexity=11 --max-line-length=120 --max-doc-length=120 --ignore=R504,A003,E800,E402,W503,WPS,H601 --statistics --exclude=.git,__pycache__,docs/source/conf.py,old,build,dist,venv,test/resources,.eggs,review.egg-info,.pytest_cache,node_modules

- name: Sort whitelists
run: |
for file in "whitelist.txt" "src/python/review/inspectors/flake8/whitelist.txt"
do
LC_ALL=C sort $file -o $file
done

- name: Commit sorted whitelists
uses: EndBug/add-and-commit@v7.2.1
with:
add: "['whitelist.txt', 'src/python/review/inspectors/flake8/whitelist.txt']"
message: 'Sort whitelists (Github Actions)'

- name: Set up Eslint
run: |
# Consistent with eslint version in Dockerfile
Expand Down
30 changes: 30 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,34 @@ RUN pip install --no-cache-dir \
-r review/requirements.txt \
./review

ENV LINTERS_DIRECTORY /opt/linters

ENV CHECKSTYLE_VERSION 8.44
ENV CHECKSTYLE_DIRECTORY ${LINTERS_DIRECTORY}/checkstyle

ENV DETEKT_VERSION 1.14.2
ENV DETEKT_DIRECTORY ${LINTERS_DIRECTORY}/detekt

ENV PMD_VERSION 6.36.0
ENV PMD_DIRECTORY ${LINTERS_DIRECTORY}/pmd

RUN mkdir -p ${CHECKSTYLE_DIRECTORY} && mkdir -p ${DETEKT_DIRECTORY} && mkdir -p ${PMD_DIRECTORY}

RUN apt -y update && apt -y upgrade

# Install Curl and Unzip
RUN apt -y install curl unzip

# Install Detekt and Detekt-formatting
RUN curl -sSLO https://github.com/detekt/detekt/releases/download/v${DETEKT_VERSION}/detekt-cli-${DETEKT_VERSION}.zip \
&& unzip detekt-cli-${DETEKT_VERSION}.zip -d ${DETEKT_DIRECTORY} \
&& curl -H "Accept: application/zip" https://repo.maven.apache.org/maven2/io/gitlab/arturbosch/detekt/detekt-formatting/${DETEKT_VERSION}/detekt-formatting-${DETEKT_VERSION}.jar -o ${DETEKT_DIRECTORY}/detekt-formatting-${DETEKT_VERSION}.jar

# Install Checkstyle
RUN curl -L https://github.com/checkstyle/checkstyle/releases/download/checkstyle-${CHECKSTYLE_VERSION}/checkstyle-${CHECKSTYLE_VERSION}-all.jar > ${CHECKSTYLE_DIRECTORY}/checkstyle-${CHECKSTYLE_VERSION}-all.jar

# Install PMD
RUN curl -sSLO https://github.com/pmd/pmd/releases/download/pmd_releases/${PMD_VERSION}/pmd-bin-${PMD_VERSION}.zip \
&& unzip pmd-bin-${PMD_VERSION}.zip -d ${PMD_DIRECTORY}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be better to move the linters installation before the hyperstyle code installation. This will allow you to use the Docker cache because the hyperstyle code changes more frequently than the linter versions.
See https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#leverage-build-cache

Or (maybe it even more better) move the linters installation to base docker image. In this case, you can continue to use the base image in GitHub actions.

Copy link
Collaborator Author

@nbirillo nbirillo Sep 17, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@andrvb @vyahhi Should I do it in this PR? Or in another one?``

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nbirillo, whatever works better for you.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's do it in the next PR

CMD ["/bin/bash"]
158 changes: 142 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ The source code of **hyperstyle** is distributed under the Apache 2.0 License.

The 3rd party software we use in this project has its own licenses.

Python language:
Python language (all versions can be found in the (requirements.txt)[requirements.txt] file):

- [x] flake8 [MIT]
* [Site and docs](https://flake8.pycqa.org/en/latest/)
Expand All @@ -40,34 +40,27 @@ Python language:

Java language:

- [x] PMD [BSD]
- [x] PMD [BSD] (Version: 6.36.0)
* [Site and docs](https://pmd.github.io/)
* [Repository](https://github.com/pmd/pmd)

- [x] Checkstyle [GNU LGPL v2.1]
- [x] Checkstyle [GNU LGPL v2.1] (Version: 8.44)
* [Site and docs](https://checkstyle.sourceforge.io/)
* [Repository](https://github.com/checkstyle/checkstyle)

- [ ] SpotBugs [GNU LGPL v2.1]
* [Site and docs](https://spotbugs.github.io/)
* [Repository](https://github.com/spotbugs/spotbugs)

- [ ] SpringLint
* [Repository](https://github.com/mauricioaniche/springlint)



Kotlin language:

- [x] Detekt [Apache 2.0]
- [x] Detekt [Apache 2.0] (Version: 1.14.2)
* [Site and docs](https://detekt.github.io/detekt/)
* [Repository](https://github.com/detekt/detekt)



JavaScript language:

- [x] ESlint [MIT]
- [x] ESlint [MIT] (Version: 7.5.0)
* [Site and docs](https://eslint.org/)
* [Repository](https://github.com/eslint/eslint)

Expand All @@ -80,6 +73,37 @@ Simply clone the repository and run the following commands:
1. `pip install -r requirements.txt`
2. `pip install -r requirements-test.txt` for tests

Also, you should set up the environment with Java and Kotlin linters sources.
You have to create set of environment variables:
- `CHECKSTYLE_VERSION` (the value of the variable must be the same with its value in [Dockerfile](Dockerfile))
- `CHECKSTYLE_DIRECTORY` (the directory with `CHECKSTYLE` linter sources)
- `DETEKT_VERSION` (the value of the variable must be the same with its value in [Dockerfile](Dockerfile))
- `DETEKT_DIRECTORY` (the directory with `DETEKT` linter sources)
- `PMD_VERSION` (the value of the variable must be the same with its value in [Dockerfile](Dockerfile))
- `PMD_DIRECTORY` (the directory with `PMD` linter sources)

You can download all sources manually or by the following commands:
- `CHECKSTYLE`:
```bash
curl -L https://github.com/checkstyle/checkstyle/releases/download/checkstyle-${CHECKSTYLE_VERSION}/checkstyle-${CHECKSTYLE_VERSION}-all.jar > ${CHECKSTYLE_DIRECTORY}/checkstyle-${CHECKSTYLE_VERSION}-all.jar
```
- `DETEKT`:
```bash
curl -sSLO https://github.com/detekt/detekt/releases/download/v${DETEKT_VERSION}/detekt-cli-${DETEKT_VERSION}.zip \
&& unzip detekt-cli-${DETEKT_VERSION}.zip -d ${DETEKT_DIRECTORY} \
&& curl -H "Accept: application/zip" https://repo.maven.apache.org/maven2/io/gitlab/arturbosch/detekt/detekt-formatting/${DETEKT_VERSION}/detekt-formatting-${DETEKT_VERSION}.jar -o ${DETEKT_DIRECTORY}/detekt-formatting-${DETEKT_VERSION}.jar
```
- `PMD`:
```bash
curl -sSLO https://github.com/pmd/pmd/releases/download/pmd_releases/${PMD_VERSION}/pmd-bin-${PMD_VERSION}.zip \
&& unzip pmd-bin-${PMD_VERSION}.zip -d ${PMD_DIRECTORY}
```

_In the future we will add a bash script that will do it automatically._

**Alternatively**, you can build a docker image by [Dockerfile](Dockerfile) and run the tool inside this image.
Or use the public docker image, that we use in the [build.yml](.github/workflows/build.yml) file.

## Usage

Run the [run_tool.py](./src/python/review/run_tool.py) with the arguments.
Expand All @@ -97,12 +121,15 @@ Argument | Description
**‑v**, **‑‑verbosity** | choose logging level according [this](https://docs.python.org/3/library/logging.html#levels) list: `1` - **ERROR**; `2` - **INFO**; `3` - **DEBUG**; `0` - disable logging (**CRITICAL** value); default value is `0` (**CRITICAL**).
**‑d**, **‑‑disable** | disable inspectors. Available values: for **Python** language: `pylint` for [Pylint](https://github.com/PyCQA/pylint), `flake8` for [flake8](https://flake8.pycqa.org/en/latest/), `radon` for [Radon](https://radon.readthedocs.io/en/latest/), `python_ast` to check different measures providing by AST; for **Java** language: `checkstyle` for the [Checkstyle](https://checkstyle.sourceforge.io/), `pmd` for [PMD](https://pmd.github.io/); for `Kotlin` language: detekt for [Detekt](https://detekt.github.io/detekt/); for **JavaScript** language: `eslint` for [ESlint](https://eslint.org/). Example: `-d pylint,flake8`.
**‑‑allow-duplicates** | allow duplicate issues found by different linters. By default, duplicates are skipped.
**‑‑language-version**, **‑‑language_version** | specify the language version for JAVA inspectors. Available values: `java7`, `java8`, `java9`, `java11`. **Note**: **‑‑language_version** is deprecated. Will be deleted in the future.
**‑‑language-version**, **‑‑language_version** | specify the language version for JAVA inspectors. Available values: `java7`, `java8`, `java9`, `java11`, `java15`. **Note**: **‑‑language_version** is deprecated and will be deleted in the future.
**‑‑n-cpu**, **‑‑n_cpu** | specify number of _cpu_ that can be used to run inspectors. **Note**: **‑‑n_cpu** is deprecated. Will be deleted in the future.
**‑f**, **‑‑format** | the output format. Available values: `json`, `text`. Default value is `json`.
**‑s**, **‑‑start-line**| the first line to be analyzed. By default it starts from `1`.
**‑e**, **‑‑end-line** | the end line to be analyzed. The default value is `None`, which meant to handle file by the end.
**‑‑new-format** | the argument determines whether the tool should use the _new format_. _New format_ means separating the result by the files to allow getting quality and observed issues for each file separately. The default value is `False`.
**‑‑history** | JSON string with a list of issues for each language. For each issue its class and quantity are specified. Example: `--history "{\"python\": [{\"origin_class\": \"SC200\", \"number\": 20}, {\"origin_class\": \"WPS314\", \"number\": 3}]}"`
**‑‑with‑all‑categories** | Without this flag, all issues will be categorized into 5 main categories: `CODE_STYLE`, `BEST_PRACTICES`, `ERROR_PRONE`, `COMPLEXITY`, `INFO`.
**‑‑group‑by‑difficulty** | With this flag, the final grade and influence on penalty will be grouped by the issue difficulty.

The output examples:

Expand All @@ -123,7 +150,9 @@ The output examples:
"line": "<the code line>",
"line_number": 54,
"column_number": 0,
"category": "FUNC_LEN"
"category": "FUNC_LEN",
"difficulty": "EASY",
"influence_on_penalty": 0
},
...
]
Expand Down Expand Up @@ -152,7 +181,104 @@ The output examples:
"line": "<the code line>",
"line_number": 174,
"column_number": 12,
"category": "BEST_PRACTICES"
"category": "BEST_PRACTICES",
"difficulty": "MEDIUM",
"influence_on_penalty": 0
},
...
]
}
]
}
```

3. Json `old format` (with **&#8209;&#8209;group&#8209;by&#8209;difficulty** argument):

```json
{
"quality": {
"EASY": {
"code": "BAD",
"text": "Code quality (beta): BAD"
},
"MEDIUM": {
"code": "BAD",
"text": "Code quality (beta): BAD"
},
"HARD": {
"code": "BAD",
"text": "Code quality (beta): BAD"
}
},
"issues": [
{
"code": "C002",
"text": "Too long function. Try to split it into smaller functions / methods.It will make your code easy to understand and less error prone.",
"line": "<the code line>",
"line_number": 54,
"column_number": 0,
"category": "FUNC_LEN",
"difficulty": "EASY",
"influence_on_penalty": {
"EASY": 0,
"MEDIUM": 0,
"HARD": 0
}
},
...
]
}
```

4. Json `new format` (with **&#8209;&#8209;group&#8209;by&#8209;difficulty** argument)

```json
{
"quality": {
"EASY": {
"code": "BAD",
"text": "Code quality (beta): BAD"
},
"MEDIUM": {
"code": "BAD",
"text": "Code quality (beta): BAD"
},
"HARD": {
"code": "BAD",
"text": "Code quality (beta): BAD"
}
},
"file_review_results": [
{
"file_name": "<your file>",
"quality": {
"EASY": {
"code": "BAD",
"text": "Code quality (beta): BAD"
},
"MEDIUM": {
"code": "BAD",
"text": "Code quality (beta): BAD"
},
"HARD": {
"code": "BAD",
"text": "Code quality (beta): BAD"
}
},
"issues": [
{
"code": "W0703",
"text": "Catching too general exception Exception",
"line": "<the code line>",
"line_number": 174,
"column_number": 12,
"category": "BEST_PRACTICES",
"difficulty": "MEDIUM",
"influence_on_penalty": {
"EASY": 0,
"MEDIUM": 0,
"HARD": 0
}
},
...
]
Expand All @@ -161,7 +287,7 @@ The output examples:
}
```

3. Text format:
5. Text format:

```text
Review of <path to your file or project> (N violations)
Expand Down
2 changes: 1 addition & 1 deletion VERSION.md
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.2.0
1.2.1
5 changes: 0 additions & 5 deletions requirements-test.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,3 @@ pytest==6.2.3
pytest-runner==5.2
pytest-subtests==0.4.0
jsonschema==3.2.0
pandas==1.2.3
django==3.2
pylint==2.7.4
requests==2.25.1
setuptools==56.0.0
11 changes: 8 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,15 @@ def get_inspectors_additional_files() -> List[str]:
return result


def get_requires() -> List[str]:
with open(current_dir / 'requirements.txt') as requirements_file:
return requirements_file.read().split('\n')


setup(
name='review',
name='hyperstyle',
version=get_version(),
description='review',
description='A tool for running a set of pre-configured linters and evaluating code quality.',
long_description=get_long_description(),
long_description_content_type='text/markdown',
url='https://github.com/hyperskill/hyperstyle',
Expand All @@ -47,7 +52,7 @@ def get_inspectors_additional_files() -> List[str]:
],
keywords='code review',
python_requires='>=3.8, <4',
install_requires=['upsourceapi'],
install_requires=get_requires(),
packages=find_packages(exclude=[
'*.unit_tests',
'*.unit_tests.*',
Expand Down
11 changes: 11 additions & 0 deletions src/python/common/tool_arguments.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,14 @@ class RunToolArgument(Enum):
NEW_FORMAT = ArgumentsInfo(None, '--new-format',
'The argument determines whether the tool '
'should use the new format')

HISTORY = ArgumentsInfo(None, '--history',
'Json string, which contains lists of issues in the previous submissions '
'for other tasks for one user.')

WITH_ALL_CATEGORIES = ArgumentsInfo(None, '--with-all-categories',
'Without this flag, all issues will be categorized into 5 main categories: '
'CODE_STYLE, BEST_PRACTICES, ERROR_PRONE, COMPLEXITY, INFO.')

GROUP_BY_DIFFICULTY = ArgumentsInfo(None, '--group-by-difficulty',
'With this flag, the final grade will be grouped by the issue difficulty.')
Loading