2月5-7日QCon全球软件开发大会携手100+位大咖讲师与你相约北京,完整日程已上线>> 了解详情
写点什么

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:004206

评论 1 条评论

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

Clickhouse:delete提交成功,数据还在

Ken

Clickhouse

「趣学前端」日常浏览的页面是怎么实现出来的

叶一一

JavaScript 前端 10月月更

挑战30天学完 Python:Day4数据类型-字符串str

MegaQi

挑战30天学完Python 10月月更

跟着卷卷龙一起学Camera--DNG格式

卷卷龙

ISP camera 10月月更

PriorityQueue源码解析(一)

知识浅谈

Priority Queue 10月月更

2022-10-14:以下go语言代码输出什么?A:0;B:7;C:9;D:不能编译。 package main import “fmt“ func main() { a := []int

福大大架构师每日一题

golang 福大大 选择题

跟着卷卷龙一起学Camera--双摄02

卷卷龙

ISP camera 10月月更

树莓派4B安装64位Linux(不用显示器键盘鼠标)

程序员欣宸

树莓派 10月月更

微信朋友圈架构图

Johnny

架构实战训练营9期

「趣学前端」给不懂技术的朋友简单演示,代码是怎么被编写出来的

叶一一

JavaScript 前端 10月月更

【LeetCode】两个链表的第一个重合节点Java题解

Albert

算法 LeetCode 10月月更

Photoshop软件应用项目(二)

张立梵

设计师 ps 10月月更

Spring Batch 事务限制

HoneyMoose

正在消失的机器视觉公司

脑极体

Zepoch节点单日内售罄,市场反响颇高

EOSdreamer111

跟着卷卷龙一起学Camera--双摄01

卷卷龙

ISP camera 10月月更

什么是Scrum?Scrum的核心要点和精髓

laofo

Scrum 研发效能 敏捷研发

25分钟了解命令执行漏洞【例题+详细讲解】(二)

贤鱼很忙

sql 网络安全 10月月更

Zepoch节点单日内售罄,市场反响颇高

股市老人

大数据ELK(二十五):添加Elasticsearch数据源

Lansonli

elasticsearch 10月月更

IDEA SpringBoot SQL连接常见五大异常处理

Yeats_Liao

后端 Java core 10月月更

Vue组件入门(五)props +

Augus

Vue3 10月月更

Spring之核心容器

楠羽

笔记 SP【ring 10月月更

「CSS畅想」周期性事情怕忘,来看看一个月内都安排在哪天

叶一一

CSS JavaScript 前端 10月月更

还在为sql注入眼花缭乱的过滤而烦恼?一文教您快速找出所有过滤内容

贤鱼很忙

网络安全 SQL注入 10月月更

如何快速对混合云环境进行安全合规检查

HummerCloud

云安全 上云合规 安全合规检测 10月月更

Spring Batch 可以在一个 Step 中有多个 Tasklet 吗

HoneyMoose

Java基础(六)| Debug模式及基础练习

timerring

Java debug 10月月更

一个实际的例子学习 SAP BTP Java 应用的 @Before 注解使用方式

Jerry Wang

Java 云原生 Cloud SAP 10月月更

测试需求平台5-Blueprint优化与首个vue页搭建

MegaQi

测试平台开发教程 10月月更

25分钟了解命令执行漏洞【例题+详细讲解】(一)

贤鱼很忙

网络安全 Web 10月月更

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