gpt4 book ai didi

R 语言感知代码重新格式化/重构工具?

转载 作者:行者123 更新时间:2023-12-03 10:17:18 32 4
gpt4 key购买 nike

最近,我发现自己使用的 R 代码在编码风格方面遍布整个 map - 多个作者和不严格遵守单一结构的个别作者。有些任务我希望比现在更好地自动化。

我正在寻找一种工具(或工具)来管理以下任务 - 按欲望的增加顺序列出,但也有点增加对存在的怀疑的顺序。

  • 基本格式。诸如将“if(foo)”转换为“if(foo)”并在大括号位置等方面实现一致性之类的事情。
  • 将 "foo$blah"转换为 "foo[["blah"]]"以进行列表访问。理想情况下,它至少能够猜测一个对象是否真的是一个列表而不是一个 data.frame 并且只转换列表。
  • 将“=”转换为“<-”。是的,这是一个简单的搜索和替换 - 但不是真的。该工具(或正则表达式)需要具有语言感知能力,以便它知道转换“x = 5”而不是“foo(x=5)”。不仅可以简单地替换符号,而且还可以确保赋值运算符两侧有一个空格,这也非常好。
  • 变量重命名,尤其是跨函数和文件。例如,假设一个列表有一个元素“foo”,我希望能够将它更改为“foobar”一次,而不必在整个代码流中跟踪该列表的每次使用。我想这将需要该工具能够完成整个控制流程,以便识别诸如在不同函数中作为另一个名称存在的列表之类的东西。
  • 命名约定。我希望能够定义一些标准命名约定(例如 Google's 或其他)并让它识别所有函数、变量等并转换它们。请注意,这与之前的条目有关,例如列表元素。

  • 随意列出基本的 unix 处理命令(例如 sed),只要它真的足够聪明,至少通常不会把事情搞砸(例如将“foo(x=5)”转换为“foo(x<-5) ”)。

    我猜如果这样的工具已经以我现在听说过的完美状态存在,而且我也意识到使用像 R 这样的语言很难自动进行某些此类更改,但是可以做梦,对吧?有没有人对某些/所有这些有指示?

    最佳答案

    由于这似乎仍然相关,我想提到 styler根据 tidyverse style 重新格式化 r 代码.

    它勾选了您的一些方框,例如基本格式,但不重命名变量(尽管 linter lintr 至少能够显示这些)。

    Styler 是一个带有接受代码功能的 R 包(例如 style_text() ,但它也可以在命令行上使用:

    例如此代码在 tmp.r

    a <-c(1,2,3) 
    if(foo) {
    b=2 }
    myVar=2

    并运行:
    Rscript -e 'styler::style_file("tmp.r")'

    将 tmp.r 覆盖为:
    a <- c(1, 2, 3)
    if (foo) {
    b <- 2
    }
    myVar <- 2

    关于R 语言感知代码重新格式化/重构工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9105357/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com