Skip to main content

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

Project description

style50

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

Installation

pip install style50

In order to style check C, C++, or Java code, a recent version (>=14.0.0) of clang-format must be installed. clang-format may be downloaded here.

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. 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

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++
  • C
  • Python
  • Javascript
  • Java

Adding a new language

Adding a new language is very simple. Language checks are encoded as classes which inherit from the StyleCheck base class (see style50/languages.py for more real-world examples). The following is a template for style checks which allows style50 to check the imaginary FooBar language for style.

import re

from style50 import StyleCheck, Style50


class FooBar(StyleCheck):

    # 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"]

    # REQUIRED: should return a correctly styled version of `code`
    def style(self, code):
        # 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
    # too few comments
    def count_comments(self, code):
        # A real-world, check would need to worry about not counting '#' in string-literals
        return len(re.findall(r"#.*", code))

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.

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

style50-2.10.4.tar.gz (25.0 kB view details)

Uploaded Source

Built Distribution

style50-2.10.4-py3-none-any.whl (25.4 kB view details)

Uploaded Python 3

File details

Details for the file style50-2.10.4.tar.gz.

File metadata

  • Download URL: style50-2.10.4.tar.gz
  • Upload date:
  • Size: 25.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for style50-2.10.4.tar.gz
Algorithm Hash digest
SHA256 13dedcb9e1652c53c4eea68d35df680127abfbc14f98a7dd081b2c7fc39a45d3
MD5 9b11c4c293b5cf251e34e65f6ea9b800
BLAKE2b-256 08c82742b1b02d815c39070a0f12344b286792be15238ae15eb322c67d8a499c

See more details on using hashes here.

File details

Details for the file style50-2.10.4-py3-none-any.whl.

File metadata

  • Download URL: style50-2.10.4-py3-none-any.whl
  • Upload date:
  • Size: 25.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for style50-2.10.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a5dd0cd89f1084ac8ebcc1c13efda21b0c19a877000d9bdf5551df59d2aae48c
MD5 7f98d4c29c35babe4e6f9c45847a4282
BLAKE2b-256 bd860c28daca8cc6d4ab3fa3aab87998c8a0c599078fd2849bb1dea35f052007

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page