Recent Releases of qchecker

qchecker - v1.1.2

BugFixes

  • RedundantNot now does not match chained comparisons
  • WhileAsFor now ignores cases where test names have possibly mutating attribute calls in the while body. #7

- Python
Published by James-Ansley over 3 years ago

qchecker - v1.1.1

BugFixes

  • IndentationErrors thrown during AST parsing are now rethrown as SyntaxErrors
  • cst_substructure.iter_matches now uses metadata wrapper for parsing string arguments to prevent errors when constructing matches in CSTs

Changes

  • NoOp is now a subset of EmptyIfBody and EmptyElseBody and will not match if the noop is part of these patterns
  • Subset substructure functionality is now deprecated and will be removed in the next major version. Substructures can be filtered manually if needed.

- Python
Published by James-Ansley over 3 years ago

qchecker - v1.1.0

[1.1.0]

BugFixes

  • RedundantArithmetic now catches x - 0 and x ** 1

Changes

  • New Substructure NoOp to catch expressions where values are assigned to themselves or augmented assignments do not change the value (e.g. x += 0)
  • New Substructure Tautology to catch simple boolean expressions that always evaluate to True (excluding the True constant). e.g. x == x or x == 0 or x != 0
  • New Substructure Contradiction to catch simple boolean expressions that always evaluate to False (excluding the False constant). e.g. x is not x or x == 0 and x == 1
  • New Substructure WhileAsFor to catch while loops that could be easily rewritten as for loops
  • New Substructure ForWithRedundantIndexing to catch for i in range loops that can be replaced with for for value in iterable loops.
  • Substructure iter_matches etc. methods can now take a parser.CodeModule object as a parameter. Using a single CodeModule for all substructures has been found to improve the run time of this program by 3-4 times for larger code blocks where all substructures are being matched.
  • String parameter to substructure methods is now deprecated.
  • RedundantNot description now gives examples of operators such as not in which students may be unaware of

- Python
Published by James-Ansley over 3 years ago

qchecker - v1.0.2

Bugfixes

  • Fixed expression tree parsing so RepeatedAddition and RepeatedMultiplication patterns consider order of operations. #5

Changes

  • RepeatedAddition and RepeatedMultiplication patterns now consider non-adjacent repeats. For example, x + y + x is now considered a repeated addition.

- Python
Published by James-Ansley over 3 years ago

qchecker - v1.0.1

Bugfixes

  • Fixed issue in RepeatedAddition and RepeatedMultiplication where an operand whose prefix/suffix matched the preceding/proceeding operands would be counted as a repeated operand. e.g. x + x1 and ab + b are no longer matched.
  • RepeatedMultiplication description no longer incorrectly lists squares as instances
  • Fixed "couuld" typo in MergeableEqual description
  • Fixed error where DuplicateIfElseStatement and SeveralDuplicateIfElseStatements would match on elif blocks #3
  • Fixed incorrect handling of CST parser errors. Parser errors are now rethrown as syntax errors

Changes

  • Substructure iter_matches function now cannot be guaranteed to lazily search code for matches. This affects some substructure is_present functions too.
  • Deprecation warnings have been removed

- Python
Published by James-Ansley almost 4 years ago

qchecker - v1.0.0

The initial release with basic functionality

- Python
Published by James-Ansley almost 4 years ago

qchecker - v0.0.0-alpha.4

- Python
Published by James-Ansley almost 4 years ago

qchecker - v0.0.0-alpha.3

Hotfix for cfg file

- Python
Published by James-Ansley almost 4 years ago

qchecker - v0.0.0-alpha.2

Added pylint and flake8 Substructures can now list subset substructures to avoid double matching.

- Python
Published by James-Ansley almost 4 years ago

qchecker - v0.0.0-alpha.1

Initial release – a barebones project with some basic functionality.

- Python
Published by James-Ansley almost 4 years ago