リリヌスCLion 2017.2新しいプロゞェクトを䜜成し、IDEのパフォヌマンスを向䞊させるためのりィザヌドでのClang-Tidy、C ++ 17ずの統合

こんにちは、Habr 今幎の倏、私たちは堎所を倱望させたした確かにサンクトペテルブルクのCLionチヌムが、 CLion 2017.2の新しいリリヌスが成功したこずを願っおいたす この投皿では、新機胜、重芁なバグ修正に぀いお説明し、コメントで質問したり、特定の蚈画に぀いお質問したりする機䌚を提䟛したす。



画像






芁するに、CLion 2017.2のリリヌスは以䞋に特化しおいたす。





今すぐ詊す準備はできたしたか 圓瀟のりェブサむトから無料の30日間バヌゞョンをダりンロヌドしおください 

詳现が必芁ですか 以䞋の詳现。 ちなみに、これらの目的のために特別に準備した小さなデモプロゞェクトですべおの新機胜を詊すこずができたす。



コヌドアナラむザヌ



新しいクむックフィックスずパヌサヌの正確性の改善



CLionのクむック修正により、 Alt+Enter



を1回クリックするだけでコヌドの朜圚的な問題を修正できたす。 このリリヌスでは、それらのいく぀かを改善したした。



したがっお、たずえば、以前は未䜿甚の倉数のみを削陀できたした。 しかし、そのような倉数のコンストラクタヌが自明でない堎合、これは完党に正しい修正ではないかもしれたせん。 珟圚、CLionには2぀のオプションがありたす。倉数を削陀するか、倉数を削陀しお初期化を終了し、コヌドのセマンティクスを保存したす。



画像



別の改善点はキャストです。 CLionは、明瀺的なキャストが必芁な状況を積極的に指摘しおいたす。 しかし、以前のクむックフィックスがC蚀語のスタむルで型キャストのみを䜿甚しおいた堎合、C ++からの型キャストのバリアント static_cast



、 dynamic_cast



、 const_cast



、 const_cast



。



画像



このリリヌスサむクルを通しお、パヌサヌ/リゟルバヌ/コヌドアナラむザヌのバグ修正に積極的に取り組んできたした。 倚くの倉曎があり、それらはさたざたな領域にありたす。





ここで、次のリリヌスの蚈画がわずかに異なるこずを盎ちに予玄する必芁がありたす。 スポット修正の代わりに、蚀語サポヌト内のコヌドのレむダヌ党䜓を曞き盎す予定です。



詳现は説明したせんが、以前の経隓に基づいお、ほずんどの問題がどこにあるかを分析し、これらの領域をボトムアップで゜ヌトし、残りの基になる問題領域を遞択したずだけ蚀いたす。 それらに察凊したす。 ちなみに、1幎前、私たちはすでにオヌバヌロヌド解決のそのような手盎しに埓事しおおり、ナヌザヌレビュヌは非垞に奜意的でした。



Clang-Tidy統合



組み蟌みのコヌドアナラむザヌの改善に加えお、Clang- Clang-Tidyに基づく人気のある急速に開発されおいるツヌルにより、さたざたなチェックずクむック修正の数を増やすこずにしたした。 圌の最倧の䞻匵は、 C ++コアガむドラむンからのチェックの郚分的なサポヌトです。これは、C ++コミュニティのBjörnStraustrupおよびHerb Sutter開発者によっお珟圚積極的に掚進されおいたす。 しかし、これは圌の唯䞀の利点ではありたせん



重芁な匕数は、 独自のチェックを蚘述しおClang-Tidyに远加する機胜です。



Clang-TidyのCLionぞの統合ずは䜕ですか IDEナヌザヌにずっお、Clang-Tidyからのチェックは、組み蟌みコヌドアナラむザヌからのチェックず同じに芋えたす。



画像



぀たり、゚ラヌぱディタヌでオンザフラむで匷調衚瀺され、 Alt+Enter



、䞀郚のチェックでは修正クむック修正が利甚可胜です。



画像



デフォルトでは、Clang-Tidyからのすべおのチェックは含たれおいたせん。 オンになっおいるものずオフになっおいるものは、 コンフル゚ンスペヌゞで確認できたす。 構成を倉曎するには、[蚭定]の[蚭定] | [蚭定]に移動する必芁がありたす。 ゚ディタヌ| 怜査| C / C ++ | 党般| Clang-Tidyを䜿甚するず、コマンドラむン圢匏でオプションを蚭定できたす。

画像



プロゞェクトで既にClang-Tidyを䜿甚しおいる人にずっおは、この行は非垞に銎染みのあるものです。これは、コマンドラむンから起動時にClang-Tidyに枡されるオン/オフチェックのリストです。 したがっお、たずえば、C ++コアガむドラむンのチェックのみを含めるには-*,cppcoreguidelines-*



を蚘述する必芁がありたす。



自分の小切手はどうですか 同様に CLionで䜿甚されるClang-Tidyに远加するず、CLion゚ディタヌに自動的に衚瀺されたす。 確かに、最埌に正盎に蚀うず、考慮すべき埮劙な点がいく぀かありたす。





新しいプロゞェクトの䜜成りィザヌドのC ++ 17



この倉曎の歎史は、CLion 2017.2にCMake 3.8を含めたこずから始たりたした。 ぀たり、このバヌゞョンのCMakeでは、CMakeファむルで蚀語暙準のバヌゞョンを習慣的に瀺すこずが可胜になりたしたset(CMAKE_CXX_STANDARD 17)



-この行は、新しいプロゞェクトを䜜成するずきにCLionによっお生成されたす。 そしお今、C ++暙準のドロップダりンリストに新しいプロゞェクトを䜜成するためのりィザヌドに、远加項目-C ++ 17が登堎したした。



MSVCのPCH



玄束したずおり、䜿甚した略語を解読したす。 CLionのプリコンパむル枈みヘッダヌのサポヌト぀たり、そのようなファむルからの文字の正しい解像床ず゚ディタヌでの正しい匷調衚瀺は、最埌のリリヌスで登堎したした。 ただし、これはすべおのコンパむラに適甚されるわけではなく、GCCおよびClangにのみ適甚されたす。 Microsoft Visual C ++コンパむラMSVCは、前回のリリヌスからも実隓モヌドのCLionでサポヌトされおいたす。 しかし、PCHの䜿甚が必芁であり、普及しおいるのはMSVCの堎合です。 そこで、このケヌスにこのサポヌトを远加したした。 トラッカヌのリク゚ストにいく぀かの埮劙な制限が蚘述されおいたす。



デバッガヌ



CLionでデバッグするための真のナポレオン蚈画がありたすが、このリリヌスでは、バグを修正し、珟圚の機胜を改良するこずが目暙でした。



そのため、CLion 2017.1のリリヌス埌、デバッグ䞭に逆アセンブラのコヌドに到達するために通垞のステップむンアクションを䜿甚するこずはあたり䟿利ではないこずが明らかになりたした。 倚くの堎合、ナヌザヌは、デバッガヌの通垞の手順で゜ヌスコヌドがないすべおのフレヌムをCLionにスキップさせたす。 したがっお、Step Into F7



はたさにそのように機胜したす。 逆アセンブラヌのコヌドにアクセスするには、Force Step Into Shift+Alt+F7



を䜿甚する必芁がありたす。



デバッガのもう1぀の重芁な倉曎点は、 デバッグ䞭に配列を衚瀺するためのレゞストリの远加オプションです。 実際、パフォヌマンスを向䞊させるために、CLionは䞀床に配列党䜓をロヌドしお衚瀺するのではなく、特定の数の芁玠のみを衚瀺したす。 デフォルトでは、50アむテムです。 次の50を衚瀺するには、[展開]をクリックしたす。 したがっお、50芁玠ごずに。



これで、 cidr.debugger.value.maxChildren



オプションがレゞストリで䜿甚可胜になりたした。これはデフォルトで50に等しく、Expandのクリックごずにロヌドする必芁がある芁玠の数を決定したす。



画像



倀が倧きすぎるず、デバッグ䞭に倀の蚈算が遅れる可胜性があるため、このオプションには泚意が必芁です。



GmockおよびGoogle Testの構成



CLionは、Google TestおよびCatchの単䜓テストフレヌムワヌクをサポヌトしおいたす。 サポヌトには、テスト結果テストランナヌの出力を備えた組み蟌みの特別りィンドりが含たれたす。 テスト結果を取埗するには、テストの実行時にGoogle TestたたはCatchの特別な構成を䜿甚する必芁がありたす。 Google Testの堎合、gtestにリンクされたCMake内のすべおのタヌゲットに察しお自動的に䜜成されたす。 そしお今、gmockにリンクしおいる人なら誰にでも。



取り消し䞍可胜なCMakeナビゲヌションおよびロヌドアクション



このリリヌスの焊点は、IDEのパフォヌマンスです。 たずえば、コンパむラマクロコンパむラ定矩枈みマクロのより最適な凊理により、むンデックス䜜成時間を短瞮したした。 この方向で他の改善がありたした。



IDEのパフォヌマンスに関する通垞の䜜業に加えお、より倚くの制埡機胜をナヌザヌに移行するこずにしたした。 これを行うために、ナヌザヌは䜕らかの理由で非垞に長い時間がかかるアクションを埅぀こずができないように、非同期でキャンセルされたIDEでいく぀かのアクションを実行し始めたしたが、すばやく簡単にキャンセルできたす。



最初のそのようなアクションは、CMakeの再起動ずナビゲヌションアクション サブクラスに移動、オヌバヌラむドされた関数に移動 でした。 CMakeの堎合、機胜するCMakeコマンドをキャンセルするボタンが察応するツヌルりィンドりに远加されたした。



画像



コマンドが正垞に完了したか、このりィンドりのCMakeコマンドの出力によっおキャンセルされたかを簡単に理解するために、察応するテキストがログの最埌に自動的に远加されたす [Finished] 、 [Reloading cancelled] 。



ナビゲヌションアクションの[ サブクラスに移動]および[ オヌバヌラむドされた関数に移動 ]に぀いおは、非同期で動䜜するようになりたした。これらをキャンセルするには、結果が衚瀺されるポップアップりィンドりの倖偎の領域をクリックしたす。



画像



パスむンタヌフェむスの怜玢、バヌゞョン管理システムのサポヌトの改善など



CLionはIntelliJプラットフォヌムに基づいた補品です。぀たり、次の倉曎が適甚されたす。





これらの詳现に぀いおは、HatelliのIntelliJ IDEA 2017.2のリリヌスに関する投皿をご芧ください。



開発者匁護士同じCatchフレヌムワヌクの著者による英語のCLion 2017.2の新機胜のデモ







興味がある堎合は、䌚瀟の公匏Webサむトから30日間の無料詊甚版をダりンロヌドしおください。 䟡栌セクションでサブスクリプションのコストも確認できたす。



英語のブログの蚘事ず曎新をお楜しみに。 コメントでご質問にお答えしたす。



JetBrains CLionチヌム

開発ぞの意欲



All Articles