ReSharper SDK

26
R# SDK: Overview Зюбанов Ярослав .NET Developer [email protected]

description

18 May 2013, OrenConf Orenburg, Russia ===== Sorry about code style

Transcript of ReSharper SDK

Page 1: ReSharper SDK

R# SDK: Overview

Зюбанов Ярослав.NET Developer

[email protected]

Page 2: ReSharper SDK

ReSharper is a renowned productivity tool that makes Microsoft Visual Studio a much better IDE

http://jetbrains.com/resharper/

Page 3: ReSharper SDK

Oh, GOD, why?

Page 4: ReSharper SDK

Supported Languages

• C#• Visual Basic .NET• JavaScript• CSS• HTML• ASP.NET• Razor• XAML• XML

Page 5: ReSharper SDK

Features

• Code Analysis• Navigation and Search• Coding Assistance (Context Actions, Code

Completion, Complete Statement etc.)• Refactorings• Code Generation• Code Templates• Code Cleanup

Page 6: ReSharper SDK

• Project Templates• Project Item Templates• Bunch of binaries• Targets (MSBuild)

• Tools (used for developing support for new languages)

• Examples• Help

SDK

Page 7: ReSharper SDK

Releases

• ReSharper 6.1.x SDK (January 2012)• ReSharper 7.0 SDK (October 2012)• ReSharper 7.0.1 SDK (March 2013)

Page 8: ReSharper SDK

Wait a minute, SDK is for plugin development?

Page 9: ReSharper SDK

Win-Win Situation

Page 10: ReSharper SDK

`Problem`

public void Foo() {

// correct use of string.Format()string str = string.Format(“Name: {0}”, name);

// unnecessary method callstring str = string.Format(“string without markers”);

// much betterstring str = “string without markers”;

// even more better? actually it’s notconst string str = “string without markers”;

}

Page 11: ReSharper SDK

PSI (Program Structure Interface)

Page 12: ReSharper SDK

PSI (Program Structure Interface)

Page 13: ReSharper SDK

Availability

Page 14: ReSharper SDK

Get selected element

Page 15: ReSharper SDK

Check #1

Page 16: ReSharper SDK

Check #2

Page 17: ReSharper SDK

Create literal expression

Page 18: ReSharper SDK

Action

Page 19: ReSharper SDK

Replace

Page 20: ReSharper SDK

Tests: Convention-based approach+src| OrenConf.Plugin| OrenConf.Plugin.Tests| OrenConf.Plugin.sln +test +data +Intentions +ContextActions +InlineString | availability01.cs | execute01.cs | execute01.cs.gold

Page 21: ReSharper SDK

Availability Test

Page 22: ReSharper SDK

Availability Test

Page 23: ReSharper SDK

Execution Test

Page 24: ReSharper SDK

Execution Test

Page 25: ReSharper SDK

Resources

ReSharper Plugin Development http://bit.ly/resharpersdk

JetBrains TVhttp://tv.jetbrains.net

OrenConf.Pluginhttps://github.com/antigravity/OrenConf.Plugin

Page 26: ReSharper SDK

Thanks