После капитального ремонта кода (изменение структуры данных, алгоритма и рефакторинга) закралась очень хитрая ошибка.
self.thrown = board[c.THROWN]
* 1003 подумал, когда писал эту строчку. Однако
board
оказывается 2D-массивом numpy, и доступ к нему по единственному индексу возвращает
ссылку на список, а не на копию. Это вызвало изменение глобального состояния. Отслеживание этого было очень утомительным, поскольку все тесты (модульные и интеграционные) прошли отлично. Решение было тривиальным, просто создайте локальную версию с
board.copy()
. Однако мой вопрос заключается в предотвращении этой ошибки в первую очередь или, по крайней мере, в ограничении времени отладки. Какой тип линтера / анализа кода мог это обнаружить?