Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ongoing project list #621

Open
david-yz-liu opened this issue Jan 12, 2020 · 0 comments
Open

Ongoing project list #621

david-yz-liu opened this issue Jan 12, 2020 · 0 comments

Comments

@david-yz-liu
Copy link
Contributor

david-yz-liu commented Jan 12, 2020

This is a placeholder for a list of ongoing project ideas, to be split into separate issues as people work on them.

  • Pylint message improvements. Over the break, I went through all of the existing Pylint checks and made notes about which ones were currently undocumented, and which ones I wanted to improve the error message for. Either or both of you could work on these improvements incrementally (this is nice because the tasks are already divided up cleanly).

  • Runtime contract checking. This is a new feature that I'm hoping to deploy in Fall 2020. You can see the prototype under python_ta/contracts; the idea is similar to what you did for the last part of CSC324 A1. The prototype works but isn't very robust, and needs to be extended to support a bunch of different things. Because this is such a new feature, this is also an opportunity for some creative brainstorming/design. I think one or both of you could work on this, but I don't know there's enough work to last the whole semester (which is okay!).

  • Investigate incorporating mypy (static type checker). mypy is a static type checker for Python that's actively being developed. I've had students work on a static type checker as well (see python_ta/typecheck) but the work is incomplete. I'm leaning towards switching to mypy, but the downside is I think it's a fairly closed API, so I'm not sure how much control/configuration we'd be able to do. But it also supports plugins, so it could actually be quite configurable.

  • Investigating astroid "inference" and constant propagation. This is sort of a hybrid between static and dynamic analysis. Basically, constant propagation is a static analysis that determines values of variables that are just constants, e.g. in

    x = 1
    y = x + 3  # y = 4
    z = x + y  # z = 5
    

    This could be useful as a generalization of our "constant_test_checker", which is a mistake students sometimes might make. Astroid's inference might do some/all of this already, but we could also use control flow graphs I think.

  • Data collection. Basically, we can implement a mode for PyTA so that every time it runs check_all, it sends the code being inspected to a server somewhere, along with the configuration used to run pyta. Eventually, instructors would be able to use this data to analyze how students are using PyTA. Obviously, this would incorporate a permission setting on individual installations and a server back-end to receive and store the files.

  • Command-line interface. Another more general technical task, but it would be nice to be able to run python_ta on the command-line, like pylint itself. This would involve learning about how to turn Python modules into command-line executables.

  • PyCharm plugin integration. It would be nice to have a plugin for PythonTA and PyCharm. This again would require some pretty open-ended investigation of how PyCharm plugins work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant