I have just finished the latest round of work on PR #4484. The project appears to be complete, but I'll wait a day or two before merging the PR.The check_leo script
found several bugs that neither pylint, mypy, nor pyflakes were able to
report. See the PR for full details. Otoh, the probability of any of these bugs actually presenting
themselves in actual operation is very small:
-
Two bugs could only occur if someone executed seldom-used Leo commands
from LeoInteg. These two bugs might not be present in LeoJS.
-
The seemingly severe undo bug could only occur within user scripts.
Neither Leo's core nor Leo's unit test called the offending method.
Conclusions
This
has been a compelling project. It's been a ton of fun. As I said
earlier, the check_leo script marks a personal milestone. This project
concludes my decades-long interest in checking tools. This is a good
thing. I feel liberated from a delusional obsession!
check_leo demonstrates that an application-specific script can find bugs that none of Python's heavyweight tools can find.
Imo,
devs from other projects could adapt this script to their apps fairly
easily. I've spent considerable time encapsulating the relevant tasks in
easy-to-understand methods.
Edward