dotnet 使用 WpfAnalyzers 辅助分析 WPF 应用代码缺陷
引入 WpfAnalyzers 代码分析工具,相当于给团队加入一个免费的代码审查工具人,可以帮忙在日常开发找到很多代码缺陷。加入 WpfAnalyzers 代码分析工具,可以减少代码编写里的低级缺陷,提升开发质量
这是一个基于 Roslyn 的免费开源的 WPF 代码分析工具,专门给 WPF 应用使用,此工具包含了约 200 条 WPF 应用编写规则,在 GitHub 上使用 MIT 最友好协议开放所有源代码,请看 https://github.com/DotNetAnalyzers/WpfAnalyzers
此工具是存放在 .NET Analyzers 组织下的应用,此开源组织不仅包含了 WPF 代码分析工具,还包含了其他很多应用的分析工具
使用 WpfAnalyzers 代码分析工具的方法特别简单,此代码分析工具是基于 Roslyn 代码分析编写的工具,可以通过 NuGet 分发,咱只需要在 VisualStudio 里面,通过 NuGet 管理安装 WpfAnalyzers 即可

或者是编辑 csproj 项目文件,加入以下代码
<ItemGroup>
<PackageReference Include="WpfAnalyzers" Version="4.0.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
安装完成 NuGet 之后,将自动启用此代码分析工具。此时看看自己编写的逗比代码,将会看到分析器开始工作,告诉大家代码是否存在坑。如以下逗比代码
public static readonly DependencyProperty Foo1Property
= DependencyProperty.Register
(
nameof(Title),
typeof(string),
typeof(MainWindow),
new PropertyMetadata(default(string))
);
public string Foo2
{
get => (string) GetValue(Foo1Property);
set => SetValue(Foo1Property, value);
}
大家看出有几个锅了?代码分析器可以帮助咱看到如下图的问题,大家觉得这个代码分析工具好用不

更有趣的是,如果大家看到分析器告诉咱的代码存在缺陷,但是咱就是不懂为什么。此时可以点击一下前面的 WPFxxx 链接。例如点击上图的 WPF0001 链接,将会跳转到 GitHub 上的对应页面。例如 WPF0001 的内容如下

通过 GitHub 上的描述,咱就可以知道,要求依赖属性的 name 内容和依赖属性的定义相同。如上面代码里面,应该改掉 nameof(Title) 的代码。不过,改哪里和如何改还不用咱费心,此分析工具也带入了修补工具的功能,只需要点点鼠标即可进行自动修复更改,如下图

好,广告结束,五毛钱到手
dotnet 使用 WpfAnalyzers 辅助分析 WPF 应用代码缺陷的更多相关文章
- 打造smali代码库辅助分析
打造smali代码库辅助分析 在分析Android应用程序的时候,我们往往会插入代码重打包apk来辅助我们分析的工作 一个比较取巧的方法就是先用java写好代码以及相关的调用之后, 然后直接扣出代码 ...
- 用IDA辅助分析grub的小技巧
IDA可以辅助我们分析grub的代码,但是bootloader本身只是bin文件,为了让IDA能正确识别分析,我们还需要提供一些基本的参数,比如文件加载到内存的地址等. 图中MBR是加载到0x7C00 ...
- 通过分析 WPF 的渲染脏区优化渲染性能
原文:通过分析 WPF 的渲染脏区优化渲染性能 本文介绍通过发现渲染脏区来提高渲染性能. 本文内容 脏区 Dirty Region WPF 性能套件 脏区监视 优化脏区重绘 脏区 Dirty Regi ...
- DOTNET CORE源码分析之IOC容器结果获取内容补充
补充一下ServiceProvider的内容 可能上一篇文章DOTNET CORE源码分析之IServiceProvider.ServiceProvider.IServiceProviderEngin ...
- [阿里DIN] 深度兴趣网络源码分析 之 整体代码结构
[阿里DIN] 深度兴趣网络源码分析 之 整体代码结构 目录 [阿里DIN] 深度兴趣网络源码分析 之 整体代码结构 0x00 摘要 0x01 文件简介 0x02 总体架构 0x03 总体代码 0x0 ...
- Windows下使用doxygen阅读和分析C/C++代码
Windows下使用doxygen阅读和分析C/C++代码 转自:http://blog.sina.com.cn/s/blog_63d902570100gwk6.html 虽然使用各种IDE或者Sou ...
- 仅个人兴趣,自己通过搜索他人的成果,结合自己的理解,来分析discuz的代码。
仅个人兴趣,自己通过搜索他人的成果,结合自己的理解,来分析discuz的代码. discuz 版本: 3.2
- 手机自动化测试:Appium源码分析之跟踪代码分析九
手机自动化测试:Appium源码分析之跟踪代码分析九 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家 ...
- 手机自动化测试:Appium源码分析之跟踪代码分析八
手机自动化测试:Appium源码分析之跟踪代码分析八 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家 ...
- 手机自动化测试:Appium源码分析之跟踪代码分析七
手机自动化测试:Appium源码分析之跟踪代码分析七 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.poptest推出手机自 ...
随机推荐
- Linux快速入门(二)Linux基础操作
绝对路径和相对路径 Linux中绝对路径指从根目录开始,即/目录. 相对路径是指相对于当前路径开始,即./ 目录,../表示上一级目录路径. pwd pwd命令用于查看当前所在目录. gubeiqin ...
- 说说你对keep-alive的理解是什么?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.Keep-alive 是什么 keep-alive是vue中的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM ke ...
- 揭秘镭速传输点对点传输技术,NAT+Raysync强强组合
点对点传输是一种文件即时传输方式用于实现数据的快速联动,为所有客户端提供资源,包括带宽.存储空间.计算能力.点对点传输技术有很多应用,包括共享各种格式音频.视频.数据等. 在5G重新定义带宽,信息技术 ...
- FPGA原语初步试验
FPGA原语初步实验 1.实验原理 将FPGA的原语基本语法加入到实际的工程中,可以通过实验具体得到相应的数字电路.这里先从与.或.非门开始,准备将数字电路的设计思路引入verilog细节设计. 2. ...
- 进程管理与 SELinux
进程管理与 SELinux 在 Linux 系统当中:『触发任何一个事件时,系统都会将他定义成为一个进程,并且给予这个进程一个 ID ,称为 PID,同时依据启发这个进程的用户与相关属性关系,给予 ...
- 基于Java NIO 写的一个简单版 Netty 服务端
A Simple Netty Based On JAVA NIO 基于Java NIO 写的一个简单版 Netty 服务端 前置知识 NIO NIO 一般指 同步非阻塞 IO,同样用于**描述程序访问 ...
- JDK14性能管理工具:Jconsole详解
目录 简介 JConsole 概览 内存 线程 类 VM信息 MBean 总结 简介 我们在开发java项目的时候,或多或少都会去用到Java的性能管理工具.有时候是为了提升应用程序的性能,有时候是为 ...
- OpenHarmony创新赛|赋能直播第三期
开放原子开源大赛OpenHarmony创新赛赋能直播间持续邀请众多技术专家一起分享应用开发技术知识,本期推出OpenHarmony应用开发之音视频播放器和三方库的使用和方法,助力开发者掌握多媒体应用 ...
- C#中超链接方法
linkLabel控件:双击事件打开网页:System.Diagnostics.Process.Start("http://www.baidu.com"); 截图:
- 6本值得推荐的MySQL学习书籍(有赠书福利)
前言 在DotNetGuide技术社区交流群和微信公众号后台经常收到小伙伴们的留言,让我出一期MySQL相关学习书籍的推荐文章.因此,今天我特意为大家精选了 6 本值得推荐的 MySQL 学习书籍,希 ...