查看原文
其他

初学者如何避免bug:RStudio代码实时错误提示功能

2017-09-23 师爷 R语言中文社区

作者:师爷,R语言中文社区作者,

知乎专栏:

https://zhuanlan.zhihu.com/rstudio


Code Diagnostics

Rstudio对静态或者动态的代码有分析的能力,具体的说在编程的过程中,会做一些必要错误提示。

通俗的讲就是当你写代码的时候,系统会自动提示错误,并且进行纠正,极大的帮助初学者避免一些不必要的小bug,简直不要太提心。


启动诊断

启动路径:tools -> Global Options -> Code -> Diagnostics 编辑框:

图中选项的简介:

  • Show Diagnostics for R

是否在R代码中执行展现行为

  • Enable diagnostics within R function calls

是否在函数调用的过程中展现诊断结果

例如. dplyr::select(mtcars, mpg, cyl). 如果你在大量使用非标准编写代码情况下,切换到此状态,而且为此导致RStudio不能生成正确的代码诊断。

  • 调用R语言函数的参数

只在函数中填入部分参数,帮你判断是否能够执行代码。诊断引擎会反馈缺失参数,不匹配参数,部分匹配参数,过多参数等错误。

例如,在下面的RStudio检测到函数add_numbers缺少参数y. 注:无论add_numbers是否在当下的编程环境下。

类似的, missing arguments报告如下 (缺少逗号):

  • 变量没有定义是否报警

如果当前的变量没有定义就会提示,诊断引擎会做简单的语法提示,具有局限性。

(图中的对象具有局域性)

  • 变量有定义但是没有使用进行提示

此诊断是针对辨认变量已经被创建,但是没有使用的情况。常常用于试图清除旧的代码,或者其他小的错误(你认为需要用,但是后来却没有用到)

例如:变量“result” 已经被定义,但是没有使用或者返回值。

  • R语言特有的诊断 (例如:空格)

这种诊断规则来自于Hadley Wickham’s style guide 的代码规则, 并且做出警告,尤其是,诊断引擎试图会对空格的错误用法进行提示。

目前不支持用户改写内在诊断逻辑。


对其他语言诊断其他诊断

RStudio也可对其他语言进行诊断 包括 C / C++, JavaScript, Python.

The C / C++ 语言的诊断报告编译器错误并做出资源文本警告。


查看诊断结果

当有诊断结果产生,会在一下两处进行提示:

  1. 在代码左侧“!”标志对应错误行

  2. 对应错误的下划线. 如下图


展现诊断

这个特性控制诊断结果的展现和更新, 诊断可以保存之后呈现或者键盘输入代码若干时间后显示。


项目级别诊断

你可以启动诊断引擎作用在项目文件中的所有R文件上,或者用向导菜单,快捷键 CMD + ALT + SHIFT + P (CTRL 在Windows):

对项目进行诊断之后,控制台出现诊断结果的Markers框,内容包括所有的错误和警告


魔法注释

RStudio诊断引擎加入魔法注释来控制每个文件的基础信息

常用的魔法注释:

# !diagnostics off -- 不对这个文档进行诊断

# !diagnostics style=[true/false] -- 对这个文档切换诊断.

# !diagnostics level=[syntax/core/all] --切换, 严重性,

此外,可以对特殊的变量进行特殊的处理:

# !diagnostics suppress=<comma-separated list of variables>

例如, global_variable没进行提示, 而other_global_variable却又如下提示:


Bug 报告

R语言的诊断具有局限性,如有bug请联系: support.rstudio.com.



公众号后台回复关键字即可学习

回复 R              R语言快速入门免费视频 
回复 统计          统计方法及其在R中的实现
回复 用户画像   民生银行客户画像搭建与应用 
回复 大数据      大数据系列免费视频教程
回复 可视化      利用R语言做数据可视化
回复 数据挖掘   数据挖掘算法原理解释与应用
回复 机器学习   R&Python机器学习入门 

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存