Consulo:約1000件のコミット、または秋の経過

私の投稿を見逃した人のために:



ConsuloはIntelliJ IDEA Community Editionのフォークです。IntelliJIDEA Community Editionは、.NET(現時点ではC#であり、このセクターに多くの重点が置かれています)、Java、Javascript(NodeJS)などをサポートしています。 プロジェクトはそれ自体で多くのオープンプラグインを収集しました。 同時に、コードは開いたままです。



私の友人の多くがすでにMac OS向けUnity3Dの本番開発で主力で使用しているという事実にもかかわらず、私はまだ安定したリリースを自慢できません。



以下では、私の秋がどのように進み、この3か月間の継続的な作業が.NET + C#プラグインなどにどのように影響したかを説明します。



新しい解決



おそらく、私の前に立っていたものの中で最も膨大なタスクから始めます-構文検索(名前空間、クラス、メソッド、.csファイルのフィールドなど)を完全に書き換える必要がありました。



プルリクエスト





アルゴリズムが書き直される前は、小さなモジュールでの作業はスムーズに進みましたが、プログラムが10クラス以上になると、IDEの応答性が大きな問題になりました。 オプションで検索をオフにする機能を導入する必要さえありました。そうしないと、PC構成が弱いユーザーはConsuloが絶えずクラッシュするからです。



既存の検索アルゴリズムを再考し、すべての弱点を考慮して書き直す必要があるため、これは難しいステップでした。 最初のイテレーションを成功と呼ぶことはできませんが、最終的には新しいアルゴリズムを思い浮かべて、このプルリクエストを正常に含めることができました。



プラグインのテストを手伝ってくれたpragmatix-corp.comのDenis Shevchenkoに感謝します。



ジェネリックとラムダ



私の頭痛。 新しい検索を実装した後、たとえばLINQで使用されるラムダを取り上げました。 ただし、ラムダとLINQを実装するには、 Generic Typeを見つける際の問題を解決する必要がありました。 その過程で、ジェネリックパラメーターの基本的な推論を実装しました-ラムダは、ケースの50%のどこかで機能しました。 現時点では、ラムダ( 課題157 )のタスクは完了していません。その実装により、予想どおり、残りのすべての問題が解決されます。







コードスタイル



C#プラグインの作業の最初から、次のようにコードを表示する「ハードコア」に慣れたため、この問題に注意を払いませんでした。







何人かの人々の要請で、私はこれに注意を向け、最後にC#コードスタイルの初期設定を追加しました。IDEのコードはデフォルトで次のようになりました。







LINQ



かつてこれは優先タスクではないと判断したため、このタスクを最も遠いコーナーに置いておきました。 昨日までそうだった。 次のようなものでした。







どういうわけかそうではありませんよね



そして、私はそう思いました。 そして、私はまだこれに注意を払うことにしました。1日のコーディングの後、すべてがずっと良くなりました。







他に何?



あまり説明していませんが、これは共分散+反分散のサポートの導入、メソッド検索の書き換え、型システムの再設計、.NET + C#プラグインの多くのサブシステムの編集です。



また、タスク140を修正しようとした方法についても書いていませんでした。その結果、すべてを壊しました。



次は?



そして、私たちと一緒に-最も興味深い。



ヌジェ



NuGetライブラリをダウンロードして自動的に追加する機能は、packages.configによって追加されました。 これまでのところ、これらはnuget.orgからのみダウンロードされており、ライブラリを視覚的に表示することはできませんが、リポジトリから使用する場合の問題の一部は修正されます。



画像



Unity3d



はいUnity3D。 私は最終的にこのように見ることにしました。 何がされた





.NETアプリとしてのJava(IKVM.NET)



また、この方向に目を向けて、実装を思い起こさせようとしています。 Javaコードの静的および動的コンパイルが機能するようになりました。 この場合、部分検索。 しかし、それが良いニュースの終わりです。 安定性の問題があります。IKVM.NETプラグインは、Consuloを簡単に肩甲骨に配置できます(またはユーザー:D)。 Javaコードで.NETデバッガーをサポートする計画です(Windows用の最新のMonoビルドを待っています)。



終わり?



記事の終わりのみ。 私はやったことを続けます。 計画-すでにそこにあるものを思い出させる。



私はすべて自分で行いますが、手が単にしたくない場所に多くの「穴」があります。



誰かがプラグインの作成(Java言語ですが、Microsoftデバッガーを作成するためにC#を必要とする人も必要です)、またはテストで私を助けたい場合は、Habrのダイアログまたはメールで私を書いてください



ありがとう



PS:

C#は終わりではなく、始まりにすぎません



All Articles