写点什么

C#静态分析工具 Roslynator.Analyzers 将方法数量提高了 500 多

  • 2020-02-17
  • 本文字数:1217 字

    阅读完需:约 4 分钟

C#静态分析工具Roslynator.Analyzers将方法数量提高了500多

Roslynator.Analyzers 软件包的新版本 2.3.1 将分析、重构和修复方法的数量提升到了 500 多个。Roslynator 使用开源的 Roslyn .NET 编译器平台对 C#代码进行静态分析。这个分析驱动 IDE 显示可以帮助你改进代码的提示和操作信息。


Roslynator 可以安装到 Visual Studio 2017、Visual Studio 2019 和 Visual Studio Code 中。VSCode 版本可以在 Linux、Mac 和 Windows 上运行。这样,它就可以利用最新版本的 Roslyn,即 3.0 版本。Roslynator.Analyzers 2.3.1 将是支持 Visual Studio 2017 的最后一个版本。


可以在一个简单的“hello world”控制台应用程序中看下这个功能。


using System;using System.Collections.Generic; namespace HelloWorldApp{    class Program    {        static void Main(string[] args)        {              var a = new List<string>() { "Hello","World"};            var b = a.ToArray();            for (var f = 1;f < b.Length;f++) {                Console.WriteLine(value: b[f].ToString());            }                    }    }}
复制代码


Roslynator 在可以重构的项旁边添加了一个灯泡动作项菜单,并在屏幕底部的面板中列出了问题。曲线突出了问题面板中提到的问题。该系统在你输入时工作。例如,当你输入 for 语句时,如果结束条件无法解析为布尔值,Roslynator 分析器就会突出显示。




使用配置文件或 Visual Studio IDE,可以配置你希望包含在项目中的检查和修复。配置文件可以共享,使整个团队能够使用相同的设置。


分析器是可扩展的,因此,你可以编写自己的分析器来处理组织中常见的问题,比如弃用的 API 或源代码中包含的安全凭据。该工具还支持命令行变体,以便可以将其集成到构建管道中。


与其他静态分析工具一样,Roslynator 不需要执行软件来确定程序的行为和特性。它通过检查源代码来实现这一点。这些工具在 20 世纪 70 年代就出现了,当时,Stephen C. Johnson在他的 C 语言课程中提出了 Lint 的想法。它们甚至可以用于非编译语言,如 Python 和 JavaScript。


SonarAnalyzer、XUnit Analyzers、Code Cracker、FxCop 和 StyleCop 等工具之所以能够相对轻松地进行这种分析,是因为 Roslyn 编译器的独特创建方式。如下所示,编译器和工具不是以黑盒的方式提供,而是作为一系列 API 和服务提供的。这些工具可以使用编译器 API 来识别问题代码以及生成替换选项。



图片来源:Roslyn Overview on github


然而,并不是所有流行的代码分析工具都使用 Roslyn。例如,Resharper工具已经存在了更长时间,它使用的是 JetBrains 专有的技术。Resharper 比 Roslyn 早了几年,他们的引擎提供的特性比 Roslyn API 多,比如解决方案范围的错误分析,“大局(big picture)”代码检查,以及更广泛的语言支持,比如 Razor。JetBrains 已经在他们的其他产品中使用了 Roslyn 技术,比如Rider IDE


原文链接:


C# Static Analysis Tool Roslynator.Analyzers Now Has over 500 Ways to Improve Code


2020-02-17 09:0014592

评论 1 条评论

发布
用户头像
C#太过先进老板们看不懂,老板们只认识java
2020-02-17 09:42
回复
没有更多了
发现更多内容

高端手机市场的诸神之战,vivo举起一把“雷神之锤”

脑极体

超越所有人的成就,牛顿的光芒也无法掩盖的天才数学巨人

图灵社区

数学 微积分 数学家

Alluxio入选英特尔AI百佳创新激励计划

Alluxio

人工智能 创新 英特尔 Alluxio 9月月更

阿里云对边缘计算的探索和实践

阿里云CloudImagine

边缘计算

【计算讲谈社】第十一讲|商用车智能驾驶商业化实践:“科技+保险”模式探索

大咖说

智能驾驶 商用车

06_Linux基础-NGINX和浏览器、网页的关系-云服务器ssh登陆-安装NGINX-上传网页-压缩命令-xz-gzip-bzip2-zip-tar-配置NGINX服务器支持下载功能-备份脚本

mycpen

Linux

AOP

平凡人生

C++学习------cctype头文件的作用与源码学习

桑榆

c++ 9月月更

三面阿里,offer到手定级P7,过程很艰辛结果很满意

程序知音

程序员 阿里 java面试 后端技术 Java八股文

MobPush 安卓推送消息数据解析推荐实现

MobTech袤博科技

android 移动推送

07_Linux基础-计划任务-备份脚本-变量定义和使用

mycpen

Linux

海泰方圆成功举办“引领数据安全创新,加速数字经济发展”技术研讨会

电子信息发烧客

09_Linux基础-SHELL-标准输入与标准输出-重定向-管道

mycpen

Linux

数据赋能智慧重庆,巴适得很!

云计算

「技术人生」第9篇:如何设定业务目标

阿里巴巴中间件

阿里云 业务 技术文章

【大话C语言】分支与循环语句

Albert Edison

C语言 开发语言 for循环 if语句 9月月更

超越所有人的成就,牛顿的光芒也无法掩盖的天才数学巨人

图灵教育

数学 微积分 数学家

图文实录|多模态自然语言处理最新进展

澜舟孟子开源社区

人工智能 自然语言处理 算法 后端

05_Linux基础-NGINX编译安装^判断是否启动^修改端口^启动停止重启^相关路径^中文乱码-Windows、Linux文件传输

mycpen

Linux

03_Linux基础-文件类型-主辅提示符-第1提示符-Linux命令-内外部命令-快捷键-改为英文编码-3个时间-stat-其他基础命令

mycpen

Linux

08_Linux基础-vim-tmux-字符编码

mycpen

Linux

《数据结构》线性表之顺序表的实现(C语言)

孤衫

数据结构 C语言 9月月更

如何正确理解Java领域中的锁机制,我们一般需要掌握哪些理论知识?

PivotalCloud

k8s自定义controller三部曲之二:自动生成代码

程序员欣宸

Kubernetes k8s 9月月更

卡塔尔世界杯足球赛dapp系统智能合约开发

开发微hkkf5566

设计模式的艺术 第十八章解释器设计模式练习(为数据库备份和同步开发一套简单的数据库同步指令,指令可对数据库中的数据和结构进行备份。例如,输入指令“COPY VIEW FROM srcDB TO desDB”表示将srcDB中所有视图对象复制至desDB)

代廉洁

设计模式的艺术

Introduction to ByteDance Pitaya

字节跳动终端技术

Python Machine Learning Pitaya ByteDance End Intelligence

视频会议,WebRTC及RingCentral解决之道

RingCentral铃盛

WebRTC 视频会议 企业号九月金秋榜

MobPush 指定页面跳转最佳实现

MobTech袤博科技

ios android intent 页面跳转

Nacos 企业版如何提升读写性能和可观测性

阿里巴巴中间件

阿里云 微服务 云原生 中间件 可观测

C#静态分析工具Roslynator.Analyzers将方法数量提高了500多_编程语言_Andy Clark_InfoQ精选文章