並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 63件

新着順 人気順

Roslynの検索結果1 - 40 件 / 63件

  • Visual Studio Code向け「Unity」拡張機能が正式版に ~半年以上にわたるプレビューを完了/「Roslyn」のパワーで「Unity」に合わせたサジェストやコード修正

      Visual Studio Code向け「Unity」拡張機能が正式版に ~半年以上にわたるプレビューを完了/「Roslyn」のパワーで「Unity」に合わせたサジェストやコード修正
    • Unityプロジェクト向けRoslynアナライザの作りかた - DeNA Testing Blog

      SWETグループの長谷川(@nowsprinting)です。 Unity 2020.2以降、Unityエディタ上でRoslynアナライザによる静的解析 (static analysis) を実行可能になりました。 また、それ以前のバージョンで作られたUnityプロジェクトであっても、JetBrains RiderなどのC#向けIDE(統合開発環境)上でRoslynアナライザの実行がサポートされています。 静的解析を充実させることで、コンパイラだけではチェックしきれないようなバグや性能劣化の原因を早期に検出できます。 例えば弊社では、実行時に動的にインスタンス化されるクラスのコンストラクタがIL2CPPビルド時にストリップされないように [Preserve]アトリビュートの指定漏れを検出するアナライザを導入し、ショーストッパーとなりえる問題を早期発見できるようにしています。 通常、こうした問

        Unityプロジェクト向けRoslynアナライザの作りかた - DeNA Testing Blog
      • neue cc - 2021年のC# Roslyn Analyzerの開発手法、或いはUnityでの利用法

        C#のAnalyzer、.NET 5時代の現在では標準でも幾つか入ってきたり、dotnet/roslyn-analyzersとして準標準なものも整備されてきたり(非同期関連だと他にmicrosoft/vs-threadingのAnalyzerも便利)、Unity 2020.2からはUnityもAnalyzer対応したり、MicrosoftもUnity向けのmicrosoft/Microsoft.Unity.Analyzersという便利Analyzerが登場してきたりと、特に意識せずとも自然に使い始めている感じになってきました。 Analyzerって何?というと、まぁlintです。lintなのですが、Roslyn(C#で書かれたC# Compiler)から抽象構文木を取り出せるので、それによってユーザーが自由にルールを作って、警告にしたりエラーにしたりできる、というのがミソです。更に高度な機

        • ピックアップRoslyn: Improved Interpolated Strings

          string interplation の改善するって。 現行仕様 C# 6.0 から以下のようなコードで string.Format 相当のことができるようになったわけですが。 var s = $"({a}, {b})"; これは、以下のように展開されます。 var s = string.Format("({0}, {1})", a, b); これがパフォーマンス的にあんまりよろしくなくて… 特に、冒頭の提案ドキュメントにもある通り、ロギング用途との相性が最悪で、 ILoggerのメソッドがなかなか使いにくそうな感じの引数になっています。 void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> format

            ピックアップRoslyn: Improved Interpolated Strings
          • Roslyn APIを使って、構文ツリー解析を行う方法 - えんじにあ雑記!

            Roslyn APIを使用して、CSharpコードの構文ツリー解析を行う方法を解説します。 ※こちらの記事は2021.12月のC#アドベントカレンダー6日目の記事になります。 はじめに .NET Compiler Platform SDK(Roslyn APIs)とは 構文ツリーとは Microsoft.CodeAnalysis.SyntaxTreeクラス Microsoft.CodeAnalysis.SyntaxNodeクラス Microsoft.CodeAnalysis.SyntaxTokenクラス Microsoft.CodeAnalysis.SyntaxTriviaクラス 構文ツリーの解析(Rootからの手動探索) 1. 構文ツリーの作成 2. Rootからツリーを探索していく 2.1 トップレベルで宣言されたusings一覧を取得する 2.2 RoslynApiTutorialと

              Roslyn APIを使って、構文ツリー解析を行う方法 - えんじにあ雑記!
            • ピックアップRoslyn 10/31: csharplang の運営方針とかトリアージとか

              また何件かまとめて、C# Language Design Meeting 議事録を紹介。 October 12th, 2020 October 14th, 2020 October 26st, 2020 主に、csharplang の運営方針に関する話と、こまごまとトリアージ話。 (この他に、 October 21st, 2020ではプライマリ コンストラクターの話があったり、 Meeting 議事録とは別に派生型の網羅性の話が出てたりするんですが、 またちょっと話が大きくなりそうなので別の回で改めて。) これの割と冒頭で話してるんですけども、csharplangで、Community Ambassador (コミュニティ大使)を設けようという話が出ていました。 (実際、ほぼ即日、何名か任命。) C# はオープンソース開発されているといっても、マイクロソフトの C# チームが責任を負ってど

                ピックアップRoslyn 10/31: csharplang の運営方針とかトリアージとか
              • Persistence, façades and Roslyn’s red-green trees

                  Persistence, façades and Roslyn’s red-green trees
                • ピックアップRoslyn 4/19: C# 9.0 機能の仕様ドキュメントいくつか

                  ここ1週間くらいで、C# 9.0 で入るであろう機能がちゃんとした仕様ドキュメントに起こされ始めました。 Add draft spec for C# pattern-matching changes. #3361 Add proposal for target-typed conditional expression. #3363 C# Language Design for April 13, 2020 (Roadmap for records) Init only proposal document #3367 パターン マッチング v3 パターン マッチングも3世代目になります。 最初 C# 7.0 に入ったころは単に「is がちょっと便利になった」、 「switch で型分岐ができるようになった」程度の機能でしたが、 3世代目ともなるとずいぶんいろいろなものが増えています。 詳細は

                    ピックアップRoslyn 4/19: C# 9.0 機能の仕様ドキュメントいくつか
                  • ピックアップRoslyn 10/9: base(T), UTF-8 String, Discard parameters

                    数日前、いくつかの新機能について、仕様書のドラフト案が上がっていました。 base(T) - Draft Specification #2910 UTF8 String Literals - Draft Specification #2911 どちらも、これまであった Design Meeting の議事録通りな感じ。 あと、ちょこっと変更が検討されて、結局元さやに納まったものが1件。 Champion "Lambda discard parameters" #111 base(T) - Draft Specification #2910 これは、C# によるプログラミング入門に説明を書いた直後に「やっぱり C# 8.0 ではやめておく」となってしまったやつ。 (しょうがないんで「C# 8.0 から外れました」って書き足してそのまま残してあったり。) まあ、.NET ランタイムのレベルで対

                      ピックアップRoslyn 10/9: base(T), UTF-8 String, Discard parameters
                    • Roslyn CodeAnalysisでC#ソースの解析をしてみる - 気まま研究所ブログ

                      お久しぶりです。 多忙によりブログネタが全くできず、今まで放置状態でした。 さて、今日はVisual Studio 2015から導入されたRoslynコンパイラのAPIの一部で、C#ソースを解析するCodeAnalysisを使って解析を行ってみます。 大学の卒研で触ることがあったのですが、ネット漁ってもあんまり情報がなかったのでこれから利用する方の参考になればと思います。 はじめに 検証環境 必要なライブラリ 下準備 解析するソースコード 構文解析 ライブラリの取り込み 標準ライブラリの場所 コンパイラの生成 解析結果の整形 ノードの取得 クラス, インタフェース, 列挙型, 構造体, デリゲートの取得 メソッド, コンストラクタの取得 プロパティの取得 フィールドの取得 基底クラスの取得 全文 おまけ ドキュメント用内部IDの取得 ドキュメント用XMLの取得 おわりに はじめに Code

                        Roslyn CodeAnalysisでC#ソースの解析をしてみる - 気まま研究所ブログ
                      • Roslyn の構文解析を使ってデバッガーを自作する

                        // C# Advent Calendar 2018 の 23 日目の記事です。 デバッガーのようなものを自作してみました。 動機 普段は Visual Studio を使っているが、デバッグ時に手動でステップ実行するのが面倒 ループなどでステップ数が多い場合 分岐の様子や変数の状態を軽くチェックしたい場合 解決案 ステップの時間間隔だけを指定して、デバッガーを自動で実行させる 変数の一覧が表示される 時間間隔をリアルタイムで調節できる .NET Compiler Platform (Roslyn) の構文解析の機能を使い、各ステップの間にデバッグ用のコードを差し込めば実現できそう 結果 というわけで、WPF でプロトタイプ「Tick-tack Debugger」を作ってみた結果、このようになりました。 例として、ニュートン法で平方根を求めています。 (クリックで拡大) 解説 以下は概略の

                          Roslyn の構文解析を使ってデバッガーを自作する
                        • ピックアップRoslyn 4/4: static virtual/abstract members

                          インターフェイスの静的メソッドを virtual/abstract 指定できるようにする話が出ています。 [Proposal]: Static abstract members in interfaces #4436 主な用途は、 ファクトリ 比較 (Equatable とか Comparable) 数値計算 とかになると思います。 一番求められている用途は数値計算で、要は NumPy みたいなことを C# でも苦痛なく、かつ、パフォーマンスを損なうことなく実現したいというものです。 ファクトリ 数値計算に特化した仕様かと言うとそんなこともないので、先に他の用途について触れておきます。 ジェネリックなメソッドを作るとき、new() 制約を付けることで引数なしのコンストラクターなら呼び出せるんですが… void m<T>() where T : new() { var x = new T()

                            ピックアップRoslyn 4/4: static virtual/abstract members
                          • ピックアップRoslyn 6/9: record

                            先月くらいからじわじわと、C# Language Design Meeting で Records がらみの議題が上がっています。 最近やっとまとまってきた感じがするのでまとめて紹介。 LDM notes for May 4 LDM notes for May 11 LDM Notes for May 27 LDM notes for June 1 record 型の新設 まず、基本方針として、record は class/struct に対する修飾子ではなくて、enum とか delegate とかと同じく1種の型みたいな扱いにしたみたいです。 なので、以下のような書き方に。 record Point(int X, int Y); とりあえず初期実装としては結構やることを絞るみたいで、 record は参照型 値型なものは既存の struct に手を入れるか、"record struct

                              ピックアップRoslyn 6/9: record
                            • Managed Stripping Levelを変更する隙にRoslyn Analyzerを導入した話 - Cluster Tech Blog

                              はじめに きっかけ Managed Stripping Levelを変更する際の課題 Reflection APIを使っているコードが動かなくなる 既存のワールドが動作しなくなる 並行開発中のコードが壊れる Roslyn Analyzerを導入する Roslyn Analyzerの運用上の問題 結果とまとめ はじめに こんにちは、クラスター株式会社でソフトウェアエンジニアをしているhomulerです。 (入社の経緯は4コマになっているので、ぜひそちらも参照ください) clusterのアプリはUnityで作られているのですが、先日、apkのサイズ対策も兼ねて、ビルド時の設定の一つであるManaged Stripping Levelをlowからmediumに変更しました。必要なコードがstripされてしまう可能性があるため、リリース済みのアプリのManaged Stripping Levelを

                                Managed Stripping Levelを変更する隙にRoslyn Analyzerを導入した話 - Cluster Tech Blog
                              • カスタムRoslyn AnalyzerをUPMパッケージとして配布する - やらなイカ?

                                Unity 2020.2でRoslynアナライザによる静的解析を行えるようになりましたが*1、NuPkgやDLLで配布してUnityプロジェクトに導入するのはやや面倒です。 そこで、アナライザをUnity Package Manager (UPM) パッケージとして配布する方法を紹介します。アナライザ単体での配布はもちろん、自作ライブラリに関連するアナライザをライブラリのUPMに同梱して配布できます。 前提は、Unity 2020.3.4以降です。UnityバージョンごとのRoslynアナライザまわりの機能制限については次の記事にまとめています(Unity 2021.2の差分まで反映済)。 www.nowsprinting.com アナライザ入りUPMパッケージの作成 アナライザをNuGetから取得もしくはビルドしたDLLは、一旦Assetsフォルダ下に置いて*2 Inspectorウィン

                                  カスタムRoslyn AnalyzerをUPMパッケージとして配布する - やらなイカ?
                                • Roslynアナライザ(+コード修正)を実装する - Qiita

                                  はじめに Roslynアナライザを作ってみましたという私の別記事で,アナライザの実装に関する資料が少ないですよねというコメントを頂きました。 確かに私も実装時にはそれはとても困った点で,MSDNですらきちんと整備されておらずましてやQiitaなど日本語の資料はほとんどありません。 Stackoverflowは偉い。 というわけで,簡単ではありますがアナライザの作成方法を解説したいと思います。 前提知識など この記事は,「Roslynアナライザの作成方法に興味があるならばC#についてそれなりの知識があるであろう」という仮定の下に書かれています。 また,「シンタックスツリーとは」みたいな説明をする趣旨の記事でもありません。 MSDNのシンタックスの話やセマンティクスの話などは大して長くないので軽く読んでおくと理解の助けになるかと思います。 環境の準備 Visual Studioは必須です。最新

                                    Roslynアナライザ(+コード修正)を実装する - Qiita
                                  • ピックアップRoslyn: C# 9.0での、パターン、records、switch、null チェックの改善

                                    この1週間で C# Design Notes が4件立て続けにアップロードされました。 Added: LDM Notes for Nov. 18, 2019 #3032 Added: LDM notes for Dec. 11, 2019 #3027 Added: LDM Notes for Dec. 16, 2019 #3036 Added: LDM notes for Dec. 18, 2019 #3039 あと、1件、提案ドキュメント追加: Unconstrained type parameter annotation proposal #3035 Nov. 18: パターン マッチ C# 9.0 でいくつか「パターン」の追加が検討されています。 パターンの組み合わせ: not, and, or とかで、パターンの組み合わせたり条件を反転させたり 括弧つきパターン: x is (pa

                                      ピックアップRoslyn: C# 9.0での、パターン、records、switch、null チェックの改善
                                    • ピックアップRoslyn: C# 10.0 でのレコード話

                                      先月書いた通り、C# 9.0 がらみはほぼ確定(バグ修正レベルの変更しかしない状態)になっています。 (そういえばライブ配信はやったもののブログ化していなかった話題として、.NET 5.0 の RC 1 到達というのもあります。 RC (リリース候補)が付くと、もう大きな変更はできません。 あと、.NET Conf のページに「.NET Conf 2020 は11月10日開始」、「.NET 5 launch」の文字が入ったので、.NET 5.0 のリリース日も決まりました。アメリカ西海岸時間で11月10日なので、日本だと11月11日に朝起きたらリリースされているくらいのタイミング。) そうなると、今デザイン作業が行われているのはすでにその次、C# 10.0 の話になります。 ということでここ2週間ほどの C# の Language Design Meeting はC# 10.0 がらみが議

                                        ピックアップRoslyn: C# 10.0 でのレコード話
                                      • ピックアップRoslyn 10/4: C# 9.0, パターン追加、switch 式ステートメント、共変戻り値

                                        何件か、C# 9.0 向けに提案されている機能のドラフト仕様が出てきました。 Proposed changes for Pattern Matching in C# 9.0 - Draft Specification #2850 Draft Spec for Switch Expression as a Statement Expression in C# 9.0 #2860 Covariant Return Types - Draft Specification #2844 パターン マッチ Pattern Matching - Draft Specification #2850 C# 8.0 でもずいぶんとパターンが増えましたが、9.0 でも追加が出そうです。 複数のパターンを and や or でつないだり、!(x is pattern) と書かなくても x is not patte

                                          ピックアップRoslyn 10/4: C# 9.0, パターン追加、switch 式ステートメント、共変戻り値
                                        • ピックアップRoslyn: ラムダ式の改善

                                          ラムダ式、これまでのバージョンでもこまごまと小さい改善があったりしたので今「lambda improvements」と言われてもタイトル的にはインパクト薄そうですが… C# 10.0 向けに結構大きな改善を入れようとしているみたいです。 Add proposal for lambda improvements #4451 背景 C# 2.0 でメソッドをデリゲート型の変数に代入するときに new が要らなくなったのとか、匿名メソッド式が入り、C# 3.0 でラムダ式が入って以来、C# 9.0 に至るまでずっと、デリゲートの型推論の向きはずっとターゲット型からの推論になっています。 C# の文法にはソース型からの推論の方が多いので、デリゲート(特にラムダ式)のターゲット型推論の挙動を「何か変」と思う人は多いんじゃないかと思います。 一番多いのは、「以下のコードがコンパイルできないのは変じゃな

                                            ピックアップRoslyn: ラムダ式の改善
                                          • roslyn/docs/features/source-generators.cookbook.md at main · dotnet/roslyn

                                            You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                              roslyn/docs/features/source-generators.cookbook.md at main · dotnet/roslyn
                                            • Unity開発でのミスを未然に防ぐRoslynアナライザーのすゝめ【DeNA TechCon 2022】

                                              コードをビルドすることなく、ミスを検知できたらゲーム開発が楽になると思いませんか? .NETの静的解析器であるRoslynアナライザーを使うことで、ビルドをすることなく問題のあるコードを検出してくれるようになります。 また、Roslynアナライザーは各々のエンジニアがカスタムルールを実装できます。例えば弊社では、実行時にリフレクションでインスタンス化されるクラスのコンストラクタが、IL2CPPビルド時に未使用コードと判別され削除されないように、Roslynアナライザーを実装し、導入することでリリースブロッカーとなりえる問題を早期発見できるようにしています。 そんな便利なRoslynアナライザーですが、 情報が少なくハードルが高い印象を持っている人もいるのではないでしょうか。 本セッションではRoslynアナライザーの導入と、カスタムルール実装のハードルを下げるための情報を共有します。 資料

                                                Unity開発でのミスを未然に防ぐRoslynアナライザーのすゝめ【DeNA TechCon 2022】
                                              • ピックアップRoslyn 2/3: Records総まとめ、トップ レベル ステートメント

                                                2件ほど。 Top-level statements and functions #3117 Records as a collection of features #3137 どちらも、散発的にアイディアが出てたもののまとめであるとか、現状報告的なものです。 Top-level statements and functions まず短い方から。 Top-level statements and functions #3117 前々から、普通の C# の文法と、スクリプト向けの文法を統合したいみたいな話はって、それの再考というか、 シナリオの整理とどのシナリオを優先するかみたいな話。 ちなみに、まだマイルストーンも決まっていないので、おそらく C# 9.0 よりは先の話になると思います。 要は、以下のような「いつものおまじない」なしでいきなり(トップレベル、あるいは、名前空間直下のレベルに

                                                  ピックアップRoslyn 2/3: Records総まとめ、トップ レベル ステートメント
                                                • ピックアップRoslyn 11/16: Discriminated Union, Enhancing Common Type, Type pattern, Interpolated String Const など

                                                  10月末のと、今週の Desing Notes が3件ほど。 LDM notes for Oct. 30th, 2019 #2950 LDM Notes for Nov 11, 2019 LDM Notes for Nov. 13, 2019 なんか結構一気に、C# 9.0向けと思われる議題が上がっています。 Function pointer syntax C# で関数ポインター的なものというとデリゲートなわけですけども、 こいつはクラスになっていて Managed なものです。 で、.NET の IL 仕様上は、デリゲートの他に生の関数ポインターもあったりします。 基本的にはネイティブ コードとの相互運用のためにあるもので、これまでは C# から直接使う方法はありませんでした。 関数ポインターを C# あらも直接触れるようにしようという話は前々から上がっていて、C# 9.0 向けの機能と

                                                    ピックアップRoslyn 11/16: Discriminated Union, Enhancing Common Type, Type pattern, Interpolated String Const など
                                                  • ピックアップRoslyn 8/3: Records など

                                                    Design Notes が3件ほど。 そのうち2件は7/10, 17のもので、C# 8.0 の最後の詰めっぽい感じ。 Added: LDM notes for July 10th and July 17th #2702 7/10 7/17 残りは、7/22 のもので、C# 9.0 に向けて「今度こそ」という感じで Records の話。 Discussion: New records proposal #2699 7/22 Records v2 7/10 7/10 議題は3点。 Empty switch statement [DoesNotReturn] params! Empty switch statement 元々、switch式を式ステートメント(式1個だけ + ; でステートメントを作るやつ)で使えるようにしたいという話があります。 セットで、戻り値が void な式を swi

                                                      ピックアップRoslyn 8/3: Records など
                                                    • ピックアップRoslyn 9/29: Utf8String など、C# 9.0 がらみ

                                                      C# 8.0 もリリースされたわけですし、 (リリース直前に 8.0 に関して修正も聞かないので、今月に入ったくらいから) C# 9.0 に向けた Design Meeting が開かれているみたいです。 .NET Conf 2019 も落ち着いたところで、議事録も公開。 LDM notes for 2019-09-16 and 2019-09-18 #2826 雰囲気的には .NET 5 向け C# 9.0 を想定 みたいな感じなので、たぶん来年のリリースですね。 (.NET 5 は 2020年11月と明言されてる。 C# を .NET のリリースとどう同期させるかは明言されていないものの、 議事録の雰囲気からすると .NET 5 時点で C# 9.0。 .NET Core 3.1 (今年11月)時点で何か更新しそうな気配もなし。) 議題については Utf8String すでに 9.0

                                                        ピックアップRoslyn 9/29: Utf8String など、C# 9.0 がらみ
                                                      • ASP.NET プロジェクトで \bin\roslyn ディレクトリが生成される (\bin\roslyn ディレクトリが生成されないようにする) (ASP.NET プログラミング)

                                                        ASP.NET プロジェクトで \bin\roslyn ディレクトリが生成される (\bin\roslyn ディレクトリが生成されないようにする) - ASP.NET ASP.NET プロジェクトで \bin\roslyn ディレクトリが生成される現象について紹介します。 動作 Visual Studio 2015 では、ASP.NETプロジェクトを作成してビルドすると、"bin"ディレクトリ内に"roslyn"ディレクトリが生成されます。 roslyn ディレクトリ内には、csc.exe vbc.exe などのコンパイラのファイルが配置されます。 "\bin\roslyn"ディレクトリのファイルを配置せずに ASP.NETアプリケーションを実行した場合、下図の csc.exe が見つからないといったエラーが発生する場合があります。 方法1:Microsoft.CodeDom.Provid

                                                          ASP.NET プロジェクトで \bin\roslyn ディレクトリが生成される (\bin\roslyn ディレクトリが生成されないようにする) (ASP.NET プログラミング)
                                                        • c# — Roslynを使用してプログラムでC#ファイルをコンパイルする方法

                                                          CSharpCodeProviderを使用してC#6.0をコンパイルすることはできず、そのためRoslynを使用しようとしています。しかし、ファイルをロードし、それをdllにコンパイルする方法の良い例を見つけることはできません。 Roslynでこのコードに似た何かを書くにはどうすればよいですか?それとも他の方法がありますか? C#6.0コードのプロジェクトへの参照を含むファイルをコンパイルしようとすると、「型または名前空間名 'x'は名前空間 'y'に存在しません(アセンブリ参照がありませんか?)」 public string CompileCode() { var provider = new CSharpCodeProvider(); var outputPath = Path.Combine(Path.GetDirectoryName(_path), $"Code.dll"); va

                                                          • GitHub - microsoft/Microsoft.Unity.Analyzers: Roslyn analyzers for Unity game developers

                                                            You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                              GitHub - microsoft/Microsoft.Unity.Analyzers: Roslyn analyzers for Unity game developers
                                                            • How to write a Roslyn Analyzer - .NET Blog

                                                              Roslyn analyzers inspect your code for style, quality, maintainability, design and other issues. Because they are powered by the .NET Compiler Platform, they can produce warnings in your code as you type even before you’ve finished the line. In other words, you don’t have to build your code to find out that you made a mistake. Analyzers can also surface an automatic code fix through the Visual Stu

                                                                How to write a Roslyn Analyzer - .NET Blog
                                                              • ピックアップRoslyn: 文脈キーワードの複雑さ低減

                                                                ここ数回やってる「C# Language Design Meeting 議事録が1か月分くらいたまったので1個1個機能紹介」シリーズに見せかけて、もうちょっと別枠。 Design Meeting の場に上がっていなくて、まだ単体の提案ドキュメントが出ただけの状態のものです。 [Proposal]: Only Allow Lexical Keywords in the Language #4460 文脈キーワードの判定方法をもうちょっと単純にしたいという話になります。 C# は極力互換性を保つ(破壊的変更になるものを避ける)ように進化を続けてきました。 なので、「var というキーワードを使った新機能を追加したいけど、元々 var という名前の型がいた場合は型名を優先して、キーワード扱いしない」みたいなことを毎度やっています。 こういう文脈次第でキーワード扱いになるものを指して文脈キーワード

                                                                  ピックアップRoslyn: 文脈キーワードの複雑さ低減
                                                                • ピックアップRoslyn: C# 9.0 向け Design Notes

                                                                  C# Language Design Notes が3件に、 C# Language Design Notes for Apr 15, 2020 C# Language Design Meeting for March 20, 2020 C# Language Design Meeting for April 27, 2020 提案ドキュメントのアップロードが3件。 Extending Partial Methods covariant return types Module Initializers 特に partial メソッドの拡張の話は Source Generator 関連です。 最初、Source Generator ネタでまとめて投稿しようかと思っていたものの、ちょっとまとまり悪くなりそうだったので1日3件ブログに。 1個前: .NET 5 への Xamarin 統合に向けて

                                                                    ピックアップRoslyn: C# 9.0 向け Design Notes
                                                                  • ピックアップRoslyn 8/31: トリアージ祭り

                                                                    .NET Core 3.0/C# 8.0 正式リリースがあるとされている .NET Conf (9月23日から)も近づいてきて、さすがに最近は C# 8.0 がらみの動きはないというか、そろそろその先を見た動きになってきた感じがします。 ということで、こういう時期恒例のトリアージ祭りが発生中。 (無言でマイルストーンを変えただけのやつも、GitHub の Sort 順序「Recently updated」で浮上するんですね。 「今週何やらトリアージしてそう」って感知してたのを、今調べてなおしてて大変助かってる。) ちなみに、Records は「これまでと変わらず」で 9.0 マイルストーンです。 一応、C# 9.0 はこれが主軸になるはず。6.0 時代から案だけはあったのが延々先延ばされてきましたが、ついに。 優先度微ダウン(8.X → 9.0) Champion "Target-type

                                                                      ピックアップRoslyn 8/31: トリアージ祭り
                                                                    • Unity 2020.2時点のRoslyn Analyzerサポート状況まとめ - やらなイカ?

                                                                      Unity 2020.2でRoslynアナライザによる静的解析が動作するようになりました。しかし、まだ色々と制限があるようなので現時点のサポート状況を検証してまとめてみました。 検証に使用したプロジェクト も公開していますので、認識違い等あれば教えていただると嬉しいです。 Unity 2020.2以降の主な更新内容 Unity 2020.3.4 Packages下(Embedded package, Local package, Package from UPM registry/ Git URL)かつAssembly Definition File (.asmdef) 管理下のアナライザDLLが認識されるようになった 通常のコンパイルステップで診断が実行されるようになった(以前はファイル更新かReimport契機) Unity 2020.3.6 IDEsプラグインパッケージの対応バージョ

                                                                        Unity 2020.2時点のRoslyn Analyzerサポート状況まとめ - やらなイカ?
                                                                      • ピックアップRoslyn 4/8

                                                                        前回話したことの続き。 ライブ配信で話したことの後半。 C# Language Design Meetingの議事録がいくつか上がっています。 March 23rd, 2020 March 25, 2020 March 30, 2020 April 1, 2020 この前後に2月頃の議事録も一気に上がっていて、 C# 9.0 がらみのデザイン決定も大詰めなんだなぁという感じがしています。 (実装期間を考えると、デザイン決定は今の時期が最も活発。) ちなみに、パターン マッチングの改善の話とかは全然出てきませんが、 この辺りはデザインがすでに割と固まってるという話であって、立ち消えたとかではありません。 トリアージ いくつか、そもそも採用するかどうかの検討。 ref struct 制約 今、ref 構造体にはインターフェイスを実装できないわけですが、 これは、ref 構造体は box 化して

                                                                          ピックアップRoslyn 4/8
                                                                        • 初めての組み込みスクリプティング(C# / Roslyn 編)

                                                                            初めての組み込みスクリプティング(C# / Roslyn 編)
                                                                          • 【C#】 CSCのバージョン メモ (.NET Framework v.s. Roslyn (Visual Studio 2019)) - Qiita

                                                                            【C#】 CSCのバージョン メモ (.NET Framework v.s. Roslyn (Visual Studio 2019))C#Roslyn.NETFrameworkcsc 概要 NAntで.NET (C#) を弄っていたら、割と最近の文法が使えなかったので、調べてみた。 Roslynとは Roslyn - Wikipedia https://ja.wikipedia.org/wiki/Roslyn .NETコンパイラプラットフォーム (ドットネット・コンパイラプラットフォーム、英語: .NET Compiler Platform) は、C#及びVisual Basic .NETのフリーかつオープンソースのコンパイラ・コード解析APIである[3]。Roslyn (ロズリン) の通称でも知られている[4]。 作者 マイクロソフト 開発元 .NET Foundation 初版 201

                                                                              【C#】 CSCのバージョン メモ (.NET Framework v.s. Roslyn (Visual Studio 2019)) - Qiita
                                                                            • ピックアップRoslyn 10/25: Records、Static lambdas

                                                                              Design Meeting でちょっと Records がらみの話があったみたいです。 あと、ついでのように「static ラムダ式」の話。 C# Language Design Meeting for Oct. 21 Records がらみは何か新アイディアが出たわけではなくて、直近、何から手を付けるか的な意思決定っぽいです。 8月にブログに書いた通り、元々 Records と呼ばれていた機能は今はいくつかの小さな機能に分割する流れになっています。 Automatic structural equality 「メンバーごとの等値判定」で Equals メソッドを自動生成 今出てる案では data class DataType { ... } みたいに data 修飾子を付けると Equals の自動生成をするようになる キーワードは変更の可能性あり With-er obj with {

                                                                                ピックアップRoslyn 10/25: Records、Static lambdas
                                                                              • UnityでもRoslynで構文解析やコード評価したい - Qiita

                                                                                はじめに RoslynはC#の構文解析やコード評価を行えるライブラリでC# 6以降のコンパイラでも使われています。Roslynを利用すると構文解析された結果を利用できるので文字列比較や正規表現と比べると解析漏れをなくせます。 RoslynのインストールはNuGetで使えますがUnityだと重複するdllがありそのままでは導入できません。それをUPMで簡単に導入する方法が分かったのでまとめてみました。 UPM化されたRoslynのドキュメント Code Analysis Unityでは以下のプロダクトでRoslynが使われています。 UPMのImmediate Window Utf8JsonのUtf8Json.UniversalCodeGenerator MessagePack-CSharpのMessagePack.Generator 環境構築 Unity2018.3以上 Package M

                                                                                  UnityでもRoslynで構文解析やコード評価したい - Qiita
                                                                                • 循環的複雑度の計算を題材にRoslyn APIを使ってみた | フューチャー技術ブログ

                                                                                  TIG コアテクノロジーユニットの山田です。ソースやドキュメントを解析してファクト分析を行う仕事をしています。 今回は循環的複雑度の計算を題材に、Roslynを用いてVB.NETに対する解析コード1をC#で書いてみました。本記事では、メソッド単位の循環的複雑度の計算を、クエリメソッドを用いて構文木を走査する方法とVisualBasicSyntaxWalkerを継承したクラスを用いて構文木を走査する方法の2通りの方法を紹介します。それぞれの方法の特徴は以下の通りです。 クエリメソッドを用いる方法 あるノードの子ノードや子孫ノード、祖先ノードをクエリメソッドにより列挙して処理する形になります いわゆるXMLに対するXPathやHTMLに対するCSSセレクタのようなインタフェースです VisualBasicSyntaxWalkerを継承したクラスを用いる方法 どの型のノードを訪問した際にどんな処

                                                                                    循環的複雑度の計算を題材にRoslyn APIを使ってみた | フューチャー技術ブログ