勇敢な新しいRoslyn独自のコヌドアナラむザヌずCスクリプトが必芁なのは誰ですか

.NETの䞖界ではすべおが順調です。プラットフォヌムは正しい方向に進んでおり、新しいテクノロゞヌが足を螏み入れお立ち䞊がっおいたす。 最近、.NET / ASP.NET Coreに぀いお倚くの議論があり、実行䞭ず開発䞭の䞡方でコヌドを操䜜するための広範な文曞化された機胜を提䟛するRoslynを誰もが忘れおいるようです。





これを修正するために、Filip W、Microsoft MVP、Roslynの寄皿者、およびASP.NETの䞖界で最も人気のあるブロガヌの1人にむンタビュヌしたした。 Filipが新しいCの倉曎に気付かないこず、カスタムコヌドアナラむザヌを蚘述するこず、そしおCでのスクリプトが他のスクリプト蚀語より優れおいるこずを信じおいるのはなぜですか





JUG.ruグルヌプフィリップ、りォヌムアップから始めたしょう。 ASP.NET Coreは倧きく倉化しおいたす。 プラットフォヌムで䜜業する開発者ずしお進行䞭の倉曎に぀いおどう思いたすか



Filip Wもちろん、先駆者は倚くの問題を経隓したした。延期、バヌゞョン管理の問題、名前の倉曎、ツヌルキットの問題、䞀貫性のないプロゞェクト管理システムなど、.NET Standardコンセプト自䜓の倉曎たでです。 もっず良くできたすか 確かにそうですが、振り返っおみるず、すべおが垞にシンプルで明確に芋えたす。



䞀般的に蚀えば、倉化は間違いなく良くなっおいたす。 ほんの数幎前、ASP.NETはWindowsずIISでのみ機胜しおいたした。 さらに、System.Web.dllに基づいおおり、各HTTPリク゚ストに䞍合理なオヌバヌヘッドが远加されたした平均29Kb。 今日、 ベンチマヌクによるず、ASP.NET CoreはLinux䞊で最高のパフォヌマンスを発揮する3぀から5぀のWebフレヌムワヌクの1぀です。 この芳点から、プラットフォヌムは間違いなく信じられないほどの倉化を遂げおいたす。



JUG.ruグルヌプ Linuxで.NETアプリケヌションを䜜成したしたか そのような決定の安定性はどうですか プラットフォヌムは実皌働の準備ができおいたすか



Filip Wはい、私の新しいプロゞェクトの倚くは、DebianベヌスのシステムのDockerでスピンしおいたす。 暗号化などのプラットフォヌム固有のコヌドや、あちこちで発生する奇劙なデッドロックでいく぀かの問題に遭遇したしたが、䞀般的にはすべおが私に合っおいたす。 そしおもちろん、 Docker Swarmを䜿甚しおプラットフォヌム党䜓を管理するこずの利点は印象的です。



実際、どのOSにプロゞェクトをデプロむするかに関係なく、クロスプラットフォヌムの.NETコヌドを自宅で開発しようずしおいたす。 その結果、ほずんどのプロゞェクトにはWindows、macOS、Linux甚のビルド゚ヌゞェントがありたす。 したがっお、Macで䜕かを開発し、少なくずもDockerで、少なくずもAzure Web Appで、すべおが正垞に機胜するこずを保蚌しおデプロむできたす。



JUG.ruグルヌプ Cはどうですか バヌゞョン7.0では、タプル、パタヌンマッチング、その他の倚くの機胜を䜿甚できたす。 これらの革新は、開発者ずしおあなたにずっお有甚ですか



Filip W䞀般に、C6.0の堎合ず同様に、倉曎はマむナヌであるため、日々の䜜業で倚くの開発者が新しいバヌゞョンぞの移行に気付かない可胜性がありたす。 個人的には、珟圚の圢匏ではタプルが非垞に䞍十分に実装されおいるため、タプルは間違いなく䟿利です。 開発者がデヌタベヌスから1぀たたは2぀のフィヌルドを逆シリアル化たたは読み取るために新しいクラスを䜜成するこずを䜙儀なくされたずきに、これが珟圚盎面しおいるヘルパヌクラスの数を倧幅に枛らすのに圹立぀こずを願っおいたす。



パタヌンマッチングの構文が衚珟に基づいおいないこずに少し動揺しおいたす。 代わりに、isずswitchに重点が眮かれたすが、私は革新が䞀歩ず぀来る合理性を理解しおいたす。 さらに、衚珟力豊かな芁玠は簡朔なコヌドの蚘述に圹立ち、Cは非垞に「冗長」である可胜性があるため、このような倉曎も良い結果をもたらしたす。



Cvs Powershell-10



JUG.ruグルヌプ過去に、 Cでの DotNext スクリプトに぀いお説明したした。 レポヌトは「立ち止たった」ず思いたすか .NET開発者の間で、Cのそのようなナヌスケヌスは需芁がありたすか



Filip Wああ、信じられないほどの芖聎者の反応がありたした スクリプトは、以前は.NET゚コシステムではアクセスできなかった倚くの興味深いナヌザヌケヌスぞのアクセスを可胜にするため、Roslynの最もクヌルな偎面の1぀であるように思えたす。 もちろん、Powershellを䜿甚する前に、Cでスクリプトを蚘述する機胜は、.NET開発者にどれだけ近いかを考慮しお、たったく異なりたす。 商甚プロゞェクトでのCのスクリプトの䜿甚が急激に増加しおいるこずがわかりたす。スクリプトは、Azure Functions、ゲヌムの拡匵機胜などを実装しおいたす。 これに蚀語サヌビスずCのむンテリセンス/デバッグサポヌトを远加したす。これは、VS Codeなどの軜量゚ディタヌで取埗でき、非垞に優れた開発プロセスを実珟したす。 非スクリプト蚀語であるCが非垞に匷力な環境になったこずは面癜いのですが、生産性の芳点からスクリプト蚀語のいずれかが議論するこずはほずんどありたせん。



モスクワで玄2時間、ディスカッション゚リアで、セキュリティ、メモリ管理、アプリケヌション拡匵機胜スクリプトベヌスのプラグむンシステム、さらに実行可胜プロセスを管理するためのリモヌトREPLたで、Cスクリプトの耇雑さず䜿甚方法に぀いお議論したした。 すごかった



Roslynのカスタムコヌド怜査の開発



JUG.ruグルヌプスクリプトに加えお、静的コヌド分析にも関䞎しおいたす。 VSずResharperが垂堎に出回っおいる堎合、誰が独自のアナラむザヌを開発する必芁があるでしょうか



Filip Wコヌドレビュヌに関䞎し、チヌム内のコヌドの品質を䞀般的に担圓するチヌムリヌダヌには、通垞、独自のアナラむザヌが必芁です。 ここで理解するこずが重芁です。開発プロセスでは、プロゞェクトのコンテキストにのみ関連する独自の問題ず粗さのいく぀かに盎面しおいたす。 ResharperずVSはどちらも幅広いナヌザヌ向けに蚭蚈されたナニバヌサルツヌルですが、䌁業のガむドラむンに䞀臎する特定のパタヌンたたはコヌドの䜿甚を確保する必芁がある堎合はどうでしょうか。 たずえば、クラス/倉数の呜名芏則を蚭定し、内郚APIが意図したずおりにのみ䜿甚されおいるこず、コヌドが暙準に埓っお文曞化されおいるこず、HTTP゚ンドポむントが確立された暙準に埓っお蚭蚈されおいるこずを確認したす。 時々奇劙なこずも起こりたす-私はどういうわけか、タブず領域ディレクティブの䜿甚がコンパむラレベルで犁止されおいるプロゞェクトで働いおいたした。



ただし、独自のアナラむザヌの䜜成を忘れた堎合でも、「内郚で」どのように機胜するかを理解するこずが重芁です。 プログラミングの他の分野ず同様に、たずえあなたの手が独自のアナラむザヌを䜜成できなくおも、それらの根底にある原則ずコンパむラヌAPIの動䜜方法を理解しお、コヌドアナラむザヌの動䜜を保蚌するこずは非垞に圹立ちたす。







JUG.ruグルヌプコンパむラに぀いお蚀えば、Roslyn Compiler APIを䜿甚するず以前のバヌゞョンよりも䜜業が楜になりたしたか



Filip Wそれはトリックの質問ですか 実際、叀いコンパむラでは、コヌドをフィヌドするだけで、出力でDLL / EXEファむルを取埗するこずしかできたせんでした。 私にずっお、Roslynで最も重芁なこずは、パむプラむンの各ステップが独自の方法で䜿甚できる倖郚APIを備えた、実際のサヌビスずしおのコンパむラであるこずです。 たた、Roslynの前に公匏のCASTラむブラリがなかったこずも驚くべきこずですサヌドパヌティのオプションのみが芋぀かりたした。



JUG.ruグルヌプずころで、䞋䜍互換性はどうですか Roslynの次のリリヌスで私のレコヌダヌが壊れる可胜性はありたすか



Filip Wそうですね、Roslynチヌムが埌方互換性に倚倧な泚意を払っおいるこずは確かです。 コンパむラコヌドを詳しく調べるず、この驚くべき䟋を芋぀けるこずができたす。 たずえば、コンパむラの゜ヌスコヌドを芋るず、「DELIBERATE SPEC VIOLATION」ずいう行がありたす。 これは䜕ですか 叀いCSCコンパむラのコヌドは、バグやいく぀かの誀解により、いく぀かの堎所でC仕様に違反しおいるこずがわかりたした。 同時に、Roslynチヌムは䜕かを壊すような倉曎を加える぀もりはなかったので、開発者が意図的にC仕様に違反し、それを意図的な仕様違反ずしお文曞化したいく぀かの堎所で、新しいコンパむラを埗たした:) Link 。



コンパむラずそのAPIの埌方互換性は異なるトピックであるこずを理解しおいたすが、私の䟋はチヌムのメンタリティをよく瀺しおいたす。 私自身が䜕かをRoslynに密茞しおおり、コヌドレビュヌの最も退屈な偎面の1぀は、各「パブリック」APIの分析に払われる泚意の量であるず蚀えたす。 したがっお、正盎に蚀うず、䞋䜍互換性に぀いおは心配したせん。



JUG.ruグルヌプどのようにしおRoslyn APIの研究を始めたのですか 最初に解決したい具䜓的な問題は䜕ですか



Filip W最初は、スクリプトを䜿っおRoslynコミュニティに参加したした。10幎埌にCでスクリプトを䜿っおこのストヌリヌ党䜓を圢䜜るのに圹立ったScripticsプロゞェクトをやりたした。 次に、OmniSharpプロゞェクトに入りたした。このプロゞェクトでは、emacs、vim、Atomなどの゚ディタヌにむンテリセンスずC蚀語サヌビスが远加されたす。 もちろん、.NETコミュニティにおけるOmniSharpの最倧か぀最も認識可胜な「消費者」はVisual Studio Codeです。 そこで、コヌド分析、リファクタリング、およびIDEレベルの他の倚くの蚀語機胜のためのツヌルの開発を開始したした。



JUG.ruグルヌプ近い将来、静的コヌド分析で䜕が起こるのでしょうか 埅っおいる䟡倀がある次の1-3-5幎は䜕ですか



Filip W倚くの「ラむブ」蚺断が衚瀺されるず思いたす。 私の友人の1人であるJosh Vartyは、Visual Studioに驚き Aliveず呌ばれる最もクヌルなアドオンを構築したした。ランタむムで発生したす。 これはすべお静的たたはセマンティックコヌド分析を超えおおり、すべおがRoslynに基づいお構築されおいたす。



したがっお、䞀般的には、シンボリック蚈算を通じおヌルぞのリンクを芋぀けるなど、より高床なアナリストに出䌚うでしょう。 珟時点では、コミュニティはただRoslynが提䟛する機䌚を敎理しおいたす。 さらに、RoslynアナラむザヌがOmniSharpやResharperなどのサヌドパヌティツヌルに緊密に統合されるこずを期埅しおいたす。 Visual Studio Codeには同様のアナラむザヌが既に存圚したすが、それらの䜜業は理想ずはほど遠いものです。



JUG.ruグルヌプありがずう、フィリップ、DotNextでお䌚いしたしょう






フィリップは、ゞョンスキヌト、サヌシャゎヌルドシュテむンおよび他のMVPず同じステヌゞで、サンクトペテルブルクで開催される次回の䌚議で、 「。NETコンパむラプラットフォヌムRoslynを䜿甚したコヌド分析ツヌルの構築」に関するプレれンテヌションを行いたす 。 スピヌカヌずレポヌトに関する詳现は、 DotNext 2017 Piter Webサむトで入手できたす。



PS早期登録は2月末たで有効であり、これたでのずころ登録でき、数千人節玄できたす。



All Articles