Skip to content

Commit

Permalink
fix markdown file
Browse files Browse the repository at this point in the history
  • Loading branch information
rongxin-liu committed Aug 31, 2023
1 parent dad162b commit b81a16b
Showing 1 changed file with 29 additions and 25 deletions.
54 changes: 29 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,39 +1,44 @@
# style50

This is style50, a tool with which code can be checked against the CS50 style guide.

## Installation

pip install style50
```bash
pip install style50
```

In order to style check C, C++, or Java code, a recent version (`>=3.0.1`) of `astyle` must be installed. `astyle` may be downloaded [here](https://sourceforge.net/projects/astyle/files/astyle/astyle%203.0.1/).

### Windows

Along with most of CS50's command line tools, `style50` supports being run on Windows but only via the [Linux Subsystem in Windows 10](https://msdn.microsoft.com/en-us/commandline/wsl/install_guide). After launching it, `style50` can be installed using the `pip` command above.

## Usage

```
usage: style50 [-h] [-o MODE] [-v] [-V] [-E] [-i PATTERN] file [file ...]
positional arguments:
file file or directory to lint
optional arguments:
-h, --help show this help message and exit
-o MODE, --output MODE
output mode, which can be character (default), split,
unified, score, or json
-v, --verbose print full tracebacks of errors
-V, --version show program's version number and exit
-E, --extensions print supported file extensions (as JSON list) and
exit
-i PATTERN, --ignore PATTERN
paths/patterns to be ignored
```bash
usage: style50 [-h] [-o MODE] [-v] [-V] [-E] [-i PATTERN] file [file ...]

positional arguments:
file file or directory to lint

optional arguments:
-h, --help show this help message and exit
-o MODE, --output MODE
output mode, which can be character (default), split,
unified, score, or json
-v, --verbose print full tracebacks of errors
-V, --version show program's version number and exit
-E, --extensions print supported file extensions (as JSON list) and
exit
-i PATTERN, --ignore PATTERN
paths/patterns to be ignored
```
`character`, `split`, and `unified` modes output character-based, side-by-side, and unified (respectively) diffs between the inputted file and the correctly styled version. `score` outputs the raw percentage of correct (unchanged) lines, while `json` outputs a json object containing information pertinent to the CS50 IDE plugin (coming soon).
## Language Support
`style50` currently supports the following languages:
- C++
Expand All @@ -53,8 +58,8 @@ from style50 import StyleCheck, Style50
class FooBar(StyleCheck):
# REQUIRED: this property informs style50 what file extensions this
# REQUIRED: this property informs style50 what file extensions this
# check should be run on (in this case, all .fb and .foobar files)
extensions = ["fb", "foobar"]
Expand All @@ -63,8 +68,8 @@ class FooBar(StyleCheck):
# All FooBar code is perfectly styled
return code
# OPTIONAL: should return the number of comments in `code`.
# If this function is not defined, `style50` will not warn the student about
# OPTIONAL: should return the number of comments in `code`.
# If this function is not defined, `style50` will not warn the student about
# too few comments
def count_comments(self, code):
# A real-world, check would need to worry about not counting '#' in string-literals
Expand All @@ -74,7 +79,6 @@ class FooBar(StyleCheck):
All classes which inherit from `StyleCheck` are automatically registered with `style50`'s `Style50` class, making style50 easily extensible. Adding the following to the above code creates a script which checks the code that `style50` already does as well as FooBar programs.

```python
# Style check the current directory, printing a unified diff
Style50("unified").run(["."])

# Style check the current directory, printing a unified diff
Style50("unified").run(["."])
```

0 comments on commit b81a16b

Please sign in to comment.