Как можно было бы создать Линт Clojure?

Один пример общей программной ошибки Clojure ожидает, что ленивое выражение будет оценено для побочных эффектов. На поверхности это кажется проверяющим на неиспользованные ленивые выражения, было бы полезно. Каков был бы лучший подход к идентификации этого и других частых ошибок? Базовый компилятор должен проверить на эти ситуации, или это должен быть домен программы линта для обнаружения? Каков был бы хороший способ запустить реализацию?

13
задан Timothy Pratley 21 December 2009 в 07:32
поделиться

2 ответа

Как насчет:

  • Multimethods with no :default method
  • Missing documentation stringings
  • In cases where the argument to a function is always same type, suggesting type hints на arguments
  • Указывая на несколько копий идентичных анонимных функций
  • Указывая на рекурсию хвоста и предлагая реструктуризацию
  • Используя макрос, где функции будет достаточно
  • Неиспользуемых аргументов, особенно & rest, тип arguments
  • Где функция будет использовать BigNums Вместо того, чтобы использовать только ints или floating point

Не уверен, как эти проверки будут реализованы, но они наверняка спасут меня от самого себя большую часть времени.

.
4
ответ дан 2 December 2019 в 02:05
поделиться

Пара идей просто для начала; он может обнаружить ленивый код, который никогда не может быть реализован, или указать на области, где будут использоваться отражения. Хотя, в общем, клоуер немного молод, как язык, чтобы выразить общий набор доказуемых ошибок?

.
1
ответ дан 2 December 2019 в 02:05
поделиться