【问题标题】:How to apply/use Perl::Tidy with an existing Perl project?如何在现有 Perl 项目中应用/使用 Perl::Tidy?
【发布时间】:2015-08-18 21:39:11
【问题描述】:

这个问题与其说是技术性问题,不如说是寻求建议以找到不会造成伤害的正确方法。

假设如下:

  1. 我们有一个用 Perl 开发的大型应用程序。
  2. 我们想开始在命令行上使用 perltidy 来强制统一 格式的样式/规则
  3. 我们有许多分支机构,但我们不知道具体何时 合并到主分支。它们也应该在合并之前或之后以某种方式进行整理
  4. 我们希望避免任何由格式化引起的提交冲突。

我想过在子程序级别开始格式化,但我在 perltidy 中没有找到这样的功能。还有另一个特性“Skipping Selected Sections of Code”,但现在我可能想要相反的——只格式化选定的代码部分。这个想法是,当开发人员接触部分代码时,他/她将只整理修改过的部分。

最好的办法是找到一种方法在不中断开发周期的情况下一次性格式化整个项目,并确保我们不会破坏代码的任何部分(在合并期间)。我们有单元测试,但代码的某些部分可能仍然未被发现。

我还要澄清一下,团队中的每个人都可能使用不同的编辑器。例如,我使用带有SublimePerlTidy 的 Sublime Text 3。其他人使用KateAtomVIM。一种正确的方法似乎是仅格式化@xxfelixxx 指出的我们接触的代码片段(谢谢!)

【问题讨论】:

标签: git perl continuous-integration project-management perl-tidy


【解决方案1】:
  1. 定义编码标准并创建.perltidyrc 与所有开发人员共享。
  2. 将整理作为团队为其项目执行的任务之一(以及测试和代码审查),因此他们可以整理/测试/审查他们接触的代码。
  3. 很好地测试代码。整理可能会引入细微的错误,因此最好在少量可管理的情况下进行(而不是仅仅整理整个代码库,然后想知道为什么事情会停止工作......)
  4. 整洁的提交应该是独立的,没有其他更改,因此回归可以分别与代码更改或整洁的更改相关联。 git bisect 非常适合查找违规提交。

至于我自己的 perltidy 用法,使用 emacs,我倾向于通过突出显示一个区域来一次整理小块代码(使用 C-space 创建标记,导航以突出显示一个区域,然后运行我已映射到perltidy-regionM-p。要使其工作,请安装perltidy 并将以下内容添加到您的.emacs 文件中:

(defun perltidy-region ()
    "Run perltidy on the current region."
    (interactive)
    (save-excursion
      (shell-command-on-region (point) (mark) "perltidy -q" nil t)))
(defun perltidy-defun ()
    "Run perltidy on the current defun."
    (interactive)
    (save-excursion (mark-defun)
    (perltidy-region)))

(global-set-key "\M-p" 'perltidy-region)

【讨论】:

  • 所以@xxfelixxx 看起来最好的方法是让每个人都为他们使用的编辑器使用各自的插件?我们将讨论建议的方法。
猜你喜欢
  • 2012-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-23
  • 2013-12-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多