首页
学习
活动
专区
圈层
工具
发布

利用 ReSharper 自定义代码中的错误模式,在代码审查之前就发现并修改错误

利用 ReSharper 自定义代码中的错误模式,在代码审查之前就发现并修改错误 发布于 2018-03-20 11:54...---- 预览效果 我们团队中自定义了一个代码风格规范,在单元测试中 Assert.AreEqual(foo.GetType(), typeof(Foo)); 应该被换成 Assert.IsInstanceOfType...确定之后我们填写其他的信息: Pattern severity:警告 如果你需要,修改成“错误”也是可以的;事实上我们的项目中就是标记为错误,这样找出的代码就会是红色的错误下划线了。...Suppression key:AssertEqualToInstanceOfType (可选)只有指定了用于阻止检查的标识字符串,才可以在特殊情况下用以下几种方法阻止检查;否则你将对错误无能为力。...设置完之后,“Edit Highlighting Pattern”窗口应该是这样的: ? 当然,在“Custom Pattern”列表中也可以统一设置所有模式的警告级别。 ?

2.9K00

LangChain学习:memory

Human: 哦,我忘记我叫什么名字了,你可以告诉我吗? AI: > Finished chain. 当然,你刚才告诉我你的名字是Michael。...Human: 哦,我忘记我叫什么名字了,你可以告诉我吗? AI: 当然,你刚才告诉我你的名字是Michael。...\nHuman: 哦,我忘记我叫什么名字了,你可以告诉我吗?\nAI: 当然,你刚才告诉我你的名字是Michael。'}...Human: 恩,我忘记回家的路了,你能帮助我吗? AI: 好的,你的家在哪里呀? {'history': 'Human: 你好,我叫小明\nAI: 你好,我可以帮助你吗?...Current conversation: Human: 你好,我叫小明 AI: 你好,我可以帮助你吗? Human: 恩,我忘记回家的路了,你能帮助我吗? AI: 好的,你的家在哪里呀?

1.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用“数据驱动测试”之前应该知道的

    3、如果想单独验证失败的两条用例应该怎么做?例如上图中的最后两条失败的用例。 4、上面的测试代码中,有多少是真正用在测试操作的,至少一半都在读写csv文件,是否需要做封装,想想怎么封装更简单?...5、在获取具体读取数据的时候,我们使用的是user[0]、user[1]、user[2],你真的容易分辨这些数据么?如果又加了一列数据呢?不改代码是不是就对不上号了。 6、这只是一组登录数据。...,而单元测试框架告诉我们如何定义一条用例。 如何写断言,是的!当你做了一堆操作之后,如何判断这一系列操作是符合预期的,那么一定要拿实际结果与预期结果进行比较,而单元测试框架告诉我们如何写断言。...测试结果统计,当执行了一系列的用例之后,总共运行了多少条用例,成功了多少条,失败了多少条,失败的用例错误在哪里?单元测试框架会帮我们统计和展示。 被测功能还是上文的功能。 ?...这个话题,本来到此就结束了,我其实是很鄙视读取数据文件的操作的,因为真get不到它的“方便”之处,做自动化测试写代码就老老实实的写代码,就你测试用的这点数据,真没必要读取文件,数据库就更谈不上了。

    1K10

    【错误记录】Kotlin 代码运行时报错 ( 在 init 初始化块中调用还未初始化的成员属性 )

    文章目录 一、报错信息 二、问题分析 三、解决方案 该问题的本质就是 , 成员属性 在 init 初始化代码块中进行初始化 , 但是在初始化之前调用了该 成员属性 , 编译时没有报错信息 , 但是运行时会报异常..., 没有报错 ; 二、问题分析 ---- 从 初始化 角度分析 上述代码的执行顺序 , Kotlin 类 对象在实例化 时会执行一系列的 初始化操作 , 这些操作按照如下顺序执行 : 主构造函数 中属性赋值...类中的属性赋值 init 初始化块 中的代码执行 次构造函数 中的代码执行 首先 , 上述代码中没有主构造 函数 , 因此该项忽略 ; 然后 , 执行属性的赋值 , 代码中定义了 name 属性 ,...) name = "Tom" } 该问题的本质就是 , 成员属性 在 init 初始化代码块中进行初始化 , 但是在初始化之前调用了该 成员属性 , 编译时没有报错信息 , 但是运行时会报异常...; 三、解决方案 ---- 调换 初始化代码块 中的代码顺序 , 先给 name 成员赋值 , 然后再执行 调用 name 成员的方法 ; class Hello{ var name: String

    3.4K10

    开学第一课:拜托,一定不要这样问Python问题

    老师,我有个代码总是调试不出来,你感觉有多大把握?要是把握大的话我去你办公室一下,把握不大的话我就不去了。 12.从完整程序中截图几行代码片段,然后问有什么错误。 13. ? 14....(发一个程序文件)老师,这程序里有个错误,你帮我找出来修改一下吧。 15.老师,你的书写的特别好,视频讲的也很好,但是我没有时间去看,你直接告诉我这个问题怎么解决吧。 16. ? 17....(发一段代码截图,且需要放大很多倍才能勉强看清)大家帮忙看看这段代码哪里有问题啊? 18. ? 19.我有个特别特别简单的问题,但在网上就是查不到解决办法,你能告诉我该怎么办吗?...23.我自己的老师说我的程序中至少有3处错误,又不告诉我哪里有错误,我找不出来,你能帮我找出来改一下吗? 24.老师,如果要在窗口上显示图片,应该怎么做?需要注意什么?...,这样可以进行最有效最高效的交流和沟通,可以在最短的时间内解决问题。

    1.1K10

    Codex 实践系列 Vol.02:让 Codex 读懂开源项目 Typer

    在这第二篇「让 Codex 读懂项目」,我们来让 Codex 先读懂一个开源项目,看它是做什么的,代码放在哪里,测试放在哪里,如果要改一点东西,应该从哪里开始看。...我们第一次打开一个新项目,容易卡在不知道从哪里看起。Codex 这一步做的事情,就是先帮我们把项目拆开:哪些文件是入口,哪些目录是源码,哪些地方是测试,哪些地方是文档。...最后是 typer/core.py,它负责更底层的命令行行为,比如命令执行、参数展示、帮助信息和错误格式化,也会和底层的 Click 兼容代码配合。...上面这段话,就是本文的核心:README 告诉我们项目对外怎么介绍自己; 源码告诉我们功能怎么实现; 测试告诉我们项目希望哪些行为保持稳定; 把这三块连起来,我们才算真的开始理解项目。...新手最先应该看的 3 个文件或目录3. 源码、测试、文档分别在哪里4. 如果要理解 --help 功能,推荐阅读路线是什么5. 这个项目里哪些地方暂时不建议新手一开始就深入不要修改任何文件。

    1.1K11

    为什么要对程序进行调试

    让我们从一段简单的 Python 代码开始,这段代码的功能是计算一组数字的平均值。...其实,报错信息就是程序的“病历”,它能告诉我们程序哪里出错了,为什么出错了。 让我们再回到上面的例子。只需要仔细阅读这些信息,就能找到问题所在。...不少同学遇到的都是一些低级问题,比如语法错误、变量拼写错误、函数调用时传递的参数不对、使用中文标点符号等。这些人眼很难一下发现的错误,代码编辑器可以在写代码的时候就提示出来。...比如在 VS Code 中,鼠标悬停在波浪线(报错)的地方,就会提示错误信息。 调试的方法 调试的本质是程序执行的可控干预,通过暂停代码执行、观察状态、修改变量或强制路径,还原程序运行的真实场景。...通过在代码中插入打印语句,可以观察变量的值、函数的返回值等信息,从而帮助定位问题。例如我们观察下面的代码,计算 result 的值。

    81410

    代码调试最佳实践

    ; 文档是正确的; 我正在查看的代码在某个时刻被执行; 这两段代码是按顺序执行的,而不是并行执行的; 这段代码在调试模式和发布模式下编译(使用或不使用-O2开关,或…)时,会做同样的事情; 编译器没有错误...这是一个nginx错误,在本例中基本上是因为“程序在响应一个请求而发送任何内容之前崩溃了”。...要做到这点,意味着你要添加如下代码: if UNEXPECTED_THING: raise "oh no THING happened" 获得正确的错误信息并不容易,因为你在程序当中哪里犯了错误并不总是显而易见的...所以这个问题绝对不仅仅是初学者需要面临的问题。 结语 当我在谈到代码调试技巧时,我总感觉我遗漏了一件重要的事情,那就是对人们在代码调试中哪里会遇到困难的一种更深入的理解。...最后写一个测试,希望它不再重现”,但是,实际上,我们很难确定人们到底会在哪里遇到困难和最难的部分是什么。对我自己而言代码调试最难的地方是什么,我通常会有点思路。

    1.6K10

    代码调试的最佳指南

    ; 文档是正确的; 我正在查看的代码在某个时刻被执行; 这两段代码是按顺序执行的,而不是并行执行的; 这段代码在调试模式和发布模式下编译(使用或不使用-O2开关,或…)时,会做同样的事情; 编译器没有错误...这是一个nginx错误,在本例中基本上是因为“程序在响应一个请求而发送任何内容之前崩溃了”。...要做到这点,意味着你要添加如下代码: if UNEXPECTED_THING:     raise "oh no THING happened" 获得正确的错误信息并不容易,因为你在程序当中哪里犯了错误并不总是显而易见的...所以这个问题绝对不仅仅是初学者需要面临的问题。 ? 结束语 当我在谈到代码调试技巧时,我总感觉我遗漏了一件重要的事情,那就是对人们在代码调试中哪里会遇到困难的一种更深入的理解。...最后写一个测试,希望它不再重现”,但是,实际上,我们很难确定人们到底会在哪里遇到困难和最难的部分是什么。对我自己而言代码调试最难的地方是什么,我通常会有点思路。

    1.7K40

    Claude 4.8 最打动我的不是更会编程,而是更少“编”

    模型写代码更快、能处理更复杂的上下文,这个大家都能感知到。另一层是编造。以前很多模型最麻烦的地方,不是完全不会,而是会把不确定的东西讲得很确定。...但真正合进去之后才发现:它漏看了一个边界条件;它假设了一个项目里不存在的工具函数;它把旧逻辑删得太干净,导致另一个入口坏了;它没有告诉你“这段我没法验证”。这种错误最浪费时间。...因为你不是从零开始写,而是在排查一个“看起来很像正确答案”的错误。模型越自信,排查成本越高。所以我现在评价代码模型,不只看它能不能写出更多代码,也看它会不会提醒风险。...比如你给它一个需求,不是让它马上写实现,而是让它判断应该改哪里。它通常会先把可能影响的模块列出来,再说哪些地方需要确认。这种回答不一定最爽。如果你只想快速拿一段代码,它可能显得有点慢,有点谨慎。...我更希望模型先告诉我:这里可能影响已有行为;这个接口缺少上下文;这段改法需要配套测试;我不能确认这个函数是否存在;如果你要我直接改,需要先看某个文件。这比直接给一段“看起来能跑”的代码更可靠。

    28010

    LLVM 工具系列 - Address Sanitizer 基本原理介绍及案例分析(1)

    } 这段代码很简单,在堆上创建了一块 int 大小的内存,随后释放,然后 *p 来读取位于 p 内存地址的值,显然是有问题的。...接着就是该内存区域是在哪里释放的,就是第 6 行, 以及之前在哪里分配的,也就是第 5 行。 可以说非常清晰。...接下来的信息是告诉我们出现错误读操作的内存地址 0x00010613a7d4 是位于 400 bytes 内存的右边 4 个 byte 的位置,根据代码,我们知道这 400bytes,其实就是代码中创建的...,访问的内存可能是距离很远的一块内存上,虽然也可以从这段错误信息里的 allocated by 的堆栈中找到实际分配这块的内存地址的位置,但是可能跟这个访问地址并没有什么关联,要注意辨别。...中几种常见的内存地址访问错误的 case,以及如何从错误信息中提取关键的信息进行排查问题。

    3.7K30

    主板上这家伙,要当CPU和内存的中间商!

    那声音继续说到:“那是计算机最核心的地方,是一个巨大的电路板,上面住着CPU、硬盘、网卡、显卡、声卡,当然,还有我们内存条。...计算机必须有我们才能正常运转,因为CPU工作需要的指令和数据都存储在咱们内存中” 刚说完,我们身边亮起了灯光,这时,我们才看清我和小伙伴们的样子。 ?...奇怪的是,我们还是看不到他。 “你在哪里,怎么亮了灯还是看不到你呢?”,一个小伙伴问到。 “我在隔壁的柜子里,像我这种残次品估计是没机会出去了” “你刚才说16个存储芯片,这不是明明只有8个吗?”...原来,我们还有一个更专业的名字:RAM,随机存储器,因为我们可以随意读写任意位置的数据。 老头还说,现在计算机基本上都是二进制的,不管什么样的数据或者代码指令,在我们这里都是一串串的0和1的比特位。...“你就是内存啊,我们可等你好久了,你来了我们总算可以开始工作了!”,旁边一个家伙跟我打起了招呼。 “你哪位啊?” “你好,我是CPU里的阿Q,你看就在你隔壁,咱们以后少不了要天天打交道了。

    1.1K31

    JavaScript中this指向哪儿?如何确定this?-前端面试进阶

    有许多人所 this 是 JavaScript 中最复杂的东西之一,也有人说 this 其实很简单......但是事实确实,有许多工作了好多年的小伙伴,在 this 指向问题上也常常出现错误。...张三上面这段代码非常简单,我们在函数内部使用了 person1 和 person2 对象中的那么属性,但是我们的函数实际上并没有接收参数,而是调用 this 隐式的使用了 name 属性,即隐式使用上下文对象中...所以我们最终得出结论:say 函数内部的 this 并不执行函数本身!那么我们上段代码中的 this.count 是哪里的 count 呢?...独立函数的调用我们可以直接看出执行上下文在哪里,但如果不是独立函数调用,比如下面代码。...这里提一点,下面写法是错误的:doFoo(foo.call(obj));因为回调函数是在 doFoo 里面执行的,上面的写法相当于 foo 函数立即执行了。

    58480

    用 chatGPT 提高效率的套路总结

    最近这段时间 chatGPT 掀起了一阵 AI 热潮,目前来看网上大部分内容都是在调戏 AI,很少有人写如何用 chatGPT 做正事儿。...还是用我初学 k8s 举例,我会把自己的理解整理成一系列观点讲给 chatGPT 听,让它指出我理解错误的地方: 这种学习体验真的是传统搜索引擎给不了的,像极了一个学渣缠着学霸求带带的场景,哈哈 3️⃣...比如,很多时候代码的解释性比文字更强,那么我可以直接要求 chatGPT 写一段 demo code 出来,反正看不懂的话还可以追问: 在这段对话中,经过我的一步步提问,chatGPT 确实写出了一个完整的...虽然它写的代码偶尔出问题,但一般都是类似包导入这种比较明显的错误,整体上我认为还是非常强大的。...比如让 chatGPT 写代码,目前它的水平只能写一写简单的 demo,而且经常需要手工修复一些细节错误。 但是让它作为搜索引擎的补充帮助我们学习新技术,还是比较靠谱的。

    65720

    打假B站百万 UP 主? MarsCode AI 真的如此丝滑?

    MarsCode AI ide 插件版本:1.2.1.2代码仓库:拉取的相同的代码仓库(并尽可能复现相同的问题代码,由于代码仓库中是正常运行的代码因此需要根据视频中的问题进行复现)问答模式:使用相同的仓库级问答提示词...这里虽然种下了一颗怀疑的种子,但是也让我们看到了 MarsCode AI 优秀的学习能力,在一个项目的长期开发学习中,具备很大的参考意义,能让我们避免在一个问题上重复犯错。...告诉我是哪个文件第几行出的问题,别说废话了我们发现 MarsCode AI 同样没有给我们正确代码,简单分析代码发现错误可能是在 loadOneBall 相关方法,提供给 MarsCode AI ,MarsCode...是哪里出了问题?咦,MarsCode AI 机智的发现我们错误代码,原来代码被注释掉了这一次 MarsCode AI 表现得非常出色和视频中描述一致,快速的帮我们解决了问题。...总结虽然 MarsCode AI 在处理复杂问题上仍有不足之处,但 MarsCode AI 仍然是我们编程旅程中的超级搭档!无论是写代码、修 Bug 还是生成测试,它都能大幅提升我们的效率。

    63332

    好程序需要你写(至少)两遍

    进化中的需求   现在的一种普遍的认识是,在开始编码前,你不可能把所有的需求都写完备。这些需求的确定是一个逐渐发展进化的过程。...进化中的代码!   可是,这就完事了吗?如今大部分的程序员都认识到了需求必定是一步步的挖掘出来的。但他们却忘了自己的工作!?他们仍然认为他们的框架和架构在项目开始之初就定型了。...一旦你对某段程序做了第三或第四次增补,或又找到了一个bug,你能感觉到这程序什么地方有异味。你开始躲避触碰这段程序,你为不需要在处理这段程序而高兴。当有了这样的感觉后我会怎么做?我会删了这些代码。...当然,IDE里空了,代码全没了,也许一些测试程序会存留下来。但你却对你的代码应该做什么有了扎实的认识。你也知道以前这段代码是什么样的,你知道它以前的内伤和异味在哪里!...重写之后,代码的质量会有明显的提高,可维护性,可扩展性都有改善,包括编程的速度。   祝你好运,坚持重新改进你的代码! ---- ----

    57940

    WorkBuddy分享季:5 个让效率翻倍的秘密武器,90% 的人用不到第 3 个

    可复现步骤(跟着做就能会)步骤1:在VSCode(VisualStudioCode,微软开发的免费代码编辑器)中打开你要分析的项目。步骤2:打开WorkBuddy侧边栏,点击“新建对话”。...传统做法:我可能需要花2-3天先读代码,画调用关系图,搞清楚哪里该改、哪里不能动。...高手用法不要只问“这段代码什么意思”,要问:“这个函数在整个项目里被哪些地方调用了?”“如果我想改这个功能,需要同步改哪些文件?”“这个项目的核心数据流是怎么样的?”...“帮这段代码生成单元测试。”“帮我优化这段代码的性能。”“帮我解释一下这段代码。”“帮我生成这个函数的文档。”每次都重新打一遍,很浪费时间。...模板2:代码审查请审查以下代码,按这个格式输出:1.严重问题(安全、性能、逻辑错误)2.改进建议(可读性、可维护性)3.优秀实践(做得好的地方)代码:{你的代码}模板3:错误诊断我遇到了一个报错,请帮我分析

    51810

    给在校生的一份 AI 使用小指南

    今天这篇文章会更通用,主要面向在校同学,聊聊怎么选 AI 工具,以及怎么把它们用在学习、写代码和做项目里。我们先从最基础的地方开始。它不算复杂教程,也不会要求你马上学会一堆工具。...举个例子,你刚学 Python,看到一段代码不理解,就可以问:我刚开始学 Python,请用新手能听懂的方式解释这段代码。 先讲它整体在做什么,再逐行解释,最后告诉我这里可能会出错的地方。...文档学习型:适合读资料、读论文、整理课程内容大家日常学习中,可能会遇到一种情况:资料很多,但不知道从哪里开始看。像是英文文档太长、课程 PPT 太散、论文摘要看不懂、讲座内容记不住。...请用新手能听懂的方式解释这段代码,重点讲清楚 async 和 await 在这里的作用。或者:我在 macOS 上运行这个 Python 脚本,Python 版本是 3.11。 下面是报错信息。...遇到报错时,先让 AI 解释错误报错是学编程最常见的痛苦来源。很多同学看到一大段红色错误信息,会第一时间复制给 AI,然后问:怎么改?其实可以换一种问法:请先解释这段报错在说什么。

    34710

    Rx 错误拦截和分发

    前言 这感觉已经不对 我最后才了解 一页页不忍翻阅 的情节你好累 这次要做的事是按照业务重构网络层的错误拦截和分发,仅以这段歌词献给两位前同事。 整理下逻辑 ?...当错误发生时,使用另一个数据流(Observable)继续发射数据,在返回的 Observable 中是看不到错误信息的。利用这个操作符,我们可以实现把一个异常信息包装起来再次抛出。...CallAdapter 的魔改 那在哪里拦截异常,然后重新包装再抛出(分发)呢? 这里先分享下我的好 gay 友 YoKey 的方案。...而转换的地方,那应该是一个适配器没错了,看看我们的代码: mRetrofit = new Retrofit.Builder().baseUrl(retrofitWrapperFactory.provideBaseUrl...retrofit.responseBodyConverter(type, new Annotation[0]); return converter.convert(response.errorBody()); } 就这样,我多了一段这样的代码来解析服务器端返回的错误信息

    92820

    一个有趣的小Bug避免了一场大灾难

    就像是《龙与地下城》的高级训练版本,在每个回合中,每个玩家都需要对往山上的哪里走,以及如何使用他们的设备做出选择。...我置身于模拟游戏之外,转而让我的队友们互相竞逐积分,并陶醉在随之而来的混乱中。 利用模拟网站中的bug,我制造了很多混乱(当然所有的混乱又都是有趣的),但这绝非严重问题。...我本来可以就此放手,随它去,但我一想到,如果有这样一个漏洞在我写的代码中,我会希望别人能够告诉我。所以,我决定负责到底,在课后报告bug。 这就是事情变得有趣的地方了。...问题不在于游戏有bug,问题在于,当一个专业的软件公司犯了这样的错误时,往往不会是一次性的。...很有可能这家公司所使用的质量保证流程,根本不能捕捉这个这个bug,于是乎,他们甚至有可能正在将这段缺陷代码用于其他客户的项目中,从而导致更多的安全漏洞。

    89960
    领券