问题标签 [reek]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 我怎样才能使这种方法更简洁?
在 Rails 项目上运行 reek 时收到警告:
[36]:ArborReloaded::UserStoryService#destroy_stories 有大约 8 个语句 (TooManyStatements)
这是方法:
如何最小化这种方法?
ruby - 混合模块时的功能嫉妒
我目前正在编写一个非常简单的测试工具开始。这个想法是您可以拥有包含我的“可测试”模块的类。例如:
可测试模块具有以下内容:
当 Reek 检出这个文件时,它返回:
但这不是包含方法的要点之一吗?
我意识到我可以关闭 Reek 检查的这一方面,但我很好奇我将如何在这里遵循它的建议?在这种情况下,这门课不是我一早就知道的东西。其他人编写的课程将包括我的模块。
同样,我知道我可以关闭检查,但似乎我可能希望在其他情况下进行检查。因此,我开始怀疑我是否在使用“mixin”方法错误,这就是 Reek 所指出的。
ruby - NilCheck 修复了安全导航运算符 (&.)
类上的这个简单方法只是status
使用安全导航运算符运行该方法。
但是臭味报告这个警告:
如何正确编写这样的方法来避免 Nil Check?
我还从thoughtbot 验证了这篇文章,但对于安全导航操作员来说似乎“太多”了。
红宝石 2.3.1
ruby - 在方法中处理数据时摆脱 FeatureEnvy
我经常遇到需要处理数据以实现某些过程的方法,通常是这样的:
考虑到:
- 逻辑上期望 post 操作在该方法内部(也处理该数据),并且在其他地方进行参数准备可能会在另一个调用
process_something
. data_from_external_service
正是如此,这些是来自应用程序外部的值,并且创建一个新类只是为了处理该组数据在我看来似乎是一种过度的措施。
是否有摆脱 FeatureEnvy 恶臭的“合法”方式?我现在唯一要做的就是# :reek:FeatureEnvy
在方法之上添加。
ruby - 是否应该将多个数组/哈希查找存储在一个变量中
我最近一直在使用Reek来重构我的代码,其中一种气味DuplicateMethodCall正在数组和哈希查找中被调用,例如多次调用时array[1]
。hash[:key]
所以我想知道多个数组或哈希查找是否如此昂贵,我们应该将它们存储在一个变量中而不是直接调用它们,这是每个人根据我的经验所做的。
我会毫不犹豫地将多个对象方法调用(特别是如果它是一个 DB 调用)存储在一个变量中,但是为数组和哈希查找这样做感觉有点过头了。
例如,我会收到一段代码的警告:
但我觉得存储params[:reference_letter_section]
在自己的变量中太多了
ruby-on-rails - Rails - FeatureEnvy:ApplicationHelper#full_title 比 self 更多地引用“page_title”(也许将它移到另一个类?)
我正在学习 Michael Hartl 的 Rails 课程,在第 4 章,我的函数 full_title 如下:
app/helpers/application_helper.rb
运行 reek(一个代码审查工具),我得到一个警告:
那么什么是 FeatureEnvy 以及在这种情况下如何解决它?
ruby-on-rails - InstanceVariableAssumption:UsersController 对实例变量“@user”的假设过多
我正在关注 Michael Hartl 教程 Rails 课程。在第 7 章中,我在 UsersController 上运行 Reek 并收到以下警告:
app/controllers/users_controller.rb -- 1 个警告:
1:InstanceVariableAssumption:UsersController 对实例变量“@user”的假设过多 [ https://github.com/troessner/reek/blob/master/docs/Instance-Variable-假设.md]
这是我的代码:
请解释为什么我得到这个错误 InstanceVariableAssumption 以及如何解决这个问题。
ruby - 如何在 Ruby 中重构 case..when
Linter 谈到以下错误,如何解决?
- FeatureEnvy:时间#可读指的是“正常运行时间”而不是自我(也许将其移至另一个类?) [ https://github.com/troessner/reek/blob/master/docs/Feature-Envy.md]
TooManyStatements:Time#readable 有大约 10 个语句 [ https://github.com/troessner/reek/blob/master/docs/Too-Many-Statements.md]
可读的分配分支条件大小太高。[20.64/15]
- 可读的圈复杂度太高。[9/6]
- 方法行数过多。[12/10]
ruby - 重构控制参数
我正在使用一种工具来查找名为 reek 的代码中的代码异味,而我对一个名为 Control Parameter 的工具有疑问
警告内容:[
我该如何解决?
sublimetext3 - Reek SublimeLinter 设置问题
我一直在尝试让 Reek Linter 插件在我的 OSX 机器上与 Sublime Text 3 一起工作,但我没有运气。
该插件称为SublimeLinter-contrib-reek
. 我已按照包装主页上的说明进行操作,但仍然无法正常工作。
当我启用调试模式时,我在控制台中收到此错误:
任何帮助将不胜感激。