Написание программы R lint

Когда я программирую на python, я нахожу использование pylint очень полезным. Однако, когда я программирую на R, нет ничего похожего.

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

  • Убедитесь, что имена функций имеют верблюжий регистр
  • Средняя длина функции
  • Обнаружение неиспользуемых переменных
  • Расстояние. Например, function(x=1, y=2) вместо function(x=1,y=2)

Однако я не уверен, с чего начать (я начал просматривать исходный код pylint).

Как мне начать? Существуют ли стандартные методы программирования для такого типа проектов? Любые хорошие ресурсы, которые я должен рассмотреть?

Я хотел бы написать весь проект на R.


person csgillespie    schedule 01.03.2011    source источник
comment
Вы когда-нибудь добились какого-либо прогресса в этом проекте?   -  person fmark    schedule 04.05.2012
comment
@fmark Я потратил неделю или около того, разбирая пакет codetools. Я многому научился, но не добился серьезного прогресса. Надеюсь этим летом....   -  person csgillespie    schedule 04.05.2012
comment
Удачи! У меня нет времени предложить внести свой вклад, но я хотел бы иметь под рукой инструмент rlint!   -  person fmark    schedule 06.05.2012


Ответы (4)


Взгляните на пакет codetools, поставляемый с R. Некоторые подробности можно найти на CRAN для пакета. Код в пакете запускается, например, когда вы выполняете R CMD check, поэтому он может перехватывать неиспользуемые переменные и т. д. Это может помочь вам начать работу с этим аспектом rlint.

Чтобы ответить на некоторые другие аспекты... Я бы начал писать простые функции, которые выполняют одну задачу, например, преобразуют имена функций в верблюжий регистр. Когда вы создаете корпус небольших функций, вы можете объединить их в рабочую функцию-оболочку lint, в то же время предоставляя пользователям/разработчикам возможность вызывать определенные функции, если они не хотят полного поведения lint.

person Gavin Simpson    schedule 01.03.2011
comment
Спасибо. Я только что взглянул на исходный код, и кажется, что уже проделано много работы. - person csgillespie; 02.03.2011
comment
@csgillespie Добро пожаловать. Для неиспользуемого бита переменной и, возможно, нескольких других вещей да, но не для camelCase или пробела, поскольку это стилистические моменты. - person Gavin Simpson; 02.03.2011

lintr — это пакет R, выполняющий анализ кода как для определения стиля, так и для возможных семантических ошибок. Он использует кодовые инструменты под капотом, а также дополнительный линтинг поверх него.

Он также интегрируется с Emacs, Vim, Sublime Text и RStudio.

person Jim    schedule 06.03.2015

Недавно кто-то выложил пакет lint для R: http://cran.r-project.org/web/packages/lint/index.html

Похоже, он находится в ранней разработке. Это на Github здесь: https://github.com/halpo/lint.git

person Guillermo Garza    schedule 23.02.2013
comment
Этот пакет был удален из CRAN по просьбе автора/сопровождающего. - person mjv; 22.04.2017

Вам может помочь процедура «Проверка R CMD». Одна вещь, которую он делает, это находит переменные, которые используются без инициализации. Часто это опечатка. Код для этой процедуры проверки может вам помочь.

Я не думаю, что это маленькая работа!

person Spacedman    schedule 01.03.2011