問題タブ [sonarqube-msbuild-runner]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - SonarQube: ファイルを含むファイルの行 X のメジャーを作成できません
最近、SonarQube サーバーを最新バージョン (5.3) にアップグレードし、すべてのプラグインをアップグレードしました。サーバーは、現時点では、Visual Studio Team Services (以前は Visual Studio Online) によってビルドされた C# プロジェクトの 1 つのビルドのみを監視します。
最近、SonarQube サーバーを最新バージョン (5.3) にアップグレードし、すべてのプラグインをアップグレードしました。サーバーは、現時点では、Visual Studio Team Services (以前は Visual Studio Online) によってビルドされた C# プロジェクトの 1 つのビルドのみを監視します。
最初は、すべてうまくいきました(別の質問で説明する長年の問題は別として)。しかし、しばらくすると、データを SQ にプッシュしようとすると、次のようなエラーが発生し始めました。
プラグイン ( sonar - dotnet -tests-library) の 1 つのコードを変更し、サーバー上にビルドされたファイル。.NET の専門家として、これを機能させるために他の人々の Java ライブラリを変更する必要がなくても構いません ;)
これは問題の解決策ですか、それともこれを引き起こしている可能性のあるものは他にありますか? 現時点では、SonarQube へのデータのプッシュを停止しています。これは残念です...
注: この回答は、ループ順序から最高のパフォーマンスを引き出す方法や並列化する方法に関するものではありません。これは、いくつかの理由により次善であると考えているためです。代わりに、順序を改善する (および並列化する) 方法についてアドバイスを試みます。
ループ順
通常、OpenMP は複数の CPU に作業を分散するために使用されます。したがって、必要なデータと情報の転送量を最小限に抑えながら、各スレッドのワークロードを最大化する必要があります。
2 番目のループではなく、最も外側のループを並列に実行したい。したがって、r_matrix
結果マトリックスに書き込むときの競合状態を避けるために、インデックスの 1 つを外側のループ インデックスとして使用する必要があります。
次に、メモリ ストレージの順序で行列をトラバースする必要があります (最初の添え字インデックスではなく、2 番目に高速に変化するインデックスを使用します)。
次のループ/インデックスの順序で両方を実現できます。
どこ
j
i
はまたはより速く変化k
し、より速くk
変化しますi
。
i
は結果行列の添え字であり、i
ループは並列に実行できます
そのように再配置するmultiply_matrices_KIJ
と、すでにかなりのパフォーマンスが向上しています。
私はいくつかの短いテストを行い、タイミングを比較するために使用したコードは次のとおりです。
あなたのmultiply_matrices_KIJ()
機能を模倣する
上記の命令を実行します。
Intel i5-2500k での 2 つの 2048x2048 行列の乗算にかかる時間
mm_kij()
: 6.16706秒。
mm_opt()
: 2.6567 秒。
指定された順序により、結果マトリックスへの書き込み時に競合状態を発生させることなく、外部ループの並列化も可能になります。
各スレッドが個々の結果行に書き込む場所
Intel i5-2500k (4 OMP スレッド) での 2 つの 2048x2048 行列の乗算にかかる時間
mm_kij()
: 6.16706秒。
mm_opt()
: 2.6567 秒。
mm_opt_par()
: 0.968325 秒。
完全なスケーリングではありませんが、シリアルコードよりも高速に開始できます。
最近、SonarQube サーバーを最新バージョン (5.3) にアップグレードし、すべてのプラグインをアップグレードしました。サーバーは、現時点では、Visual Studio Team Services (以前は Visual Studio Online) によってビルドされた C# プロジェクトの 1 つのビルドのみを監視します。
最近、SonarQube サーバーを最新バージョン (5.3) にアップグレードし、すべてのプラグインをアップグレードしました。サーバーは、現時点では、Visual Studio Team Services (以前は Visual Studio Online) によってビルドされた C# プロジェクトの 1 つのビルドのみを監視します。
最初は、すべてうまくいきました(別の質問で説明する長年の問題は別として)。しかし、しばらくすると、データを SQ にプッシュしようとすると、次のようなエラーが発生し始めました。
プラグイン ( sonar - dotnet -tests-library) の 1 つのコードを変更し、サーバー上にビルドされたファイル。.NET の専門家として、これを機能させるために他の人々の Java ライブラリを変更する必要がなくても構いません ;)
これは問題の解決策ですか、それともこれを引き起こしている可能性のあるものは他にありますか? 現時点では、SonarQube へのデータのプッシュを停止しています。これは残念です...
注: この回答は、ループ順序から最高のパフォーマンスを引き出す方法や並列化する方法に関するものではありません。これは、いくつかの理由により次善であると考えているためです。代わりに、順序を改善する (および並列化する) 方法についてアドバイスを試みます。
ループ順
通常、OpenMP は複数の CPU に作業を分散するために使用されます。したがって、必要なデータと情報の転送量を最小限に抑えながら、各スレッドのワークロードを最大化する必要があります。
2 番目のループではなく、最も外側のループを並列に実行したい。したがって、
r_matrix
結果マトリックスに書き込むときの競合状態を避けるために、インデックスの 1 つを外側のループ インデックスとして使用する必要があります。次に、メモリ ストレージの順序で行列をトラバースする必要があります (最初の添え字インデックスではなく、2 番目に高速に変化するインデックスを使用します)。
次のループ/インデックスの順序で両方を実現できます。
どこ
j
i
はまたはより速く変化k
し、より速くk
変化しますi
。i
は結果行列の添え字であり、i
ループは並列に実行できます
そのように再配置するmultiply_matrices_KIJ
と、すでにかなりのパフォーマンスが向上しています。
私はいくつかの短いテストを行い、タイミングを比較するために使用したコードは次のとおりです。
あなたのmultiply_matrices_KIJ()
機能を模倣する
上記の命令を実行します。
Intel i5-2500k での 2 つの 2048x2048 行列の乗算にかかる時間
mm_kij()
: 6.16706秒。
mm_opt()
: 2.6567 秒。
指定された順序により、結果マトリックスへの書き込み時に競合状態を発生させることなく、外部ループの並列化も可能になります。
各スレッドが個々の結果行に書き込む場所
Intel i5-2500k (4 OMP スレッド) での 2 つの 2048x2048 行列の乗算にかかる時間
mm_kij()
: 6.16706秒。
mm_opt()
: 2.6567 秒。
mm_opt_par()
: 0.968325 秒。
完全なスケーリングではありませんが、シリアルコードよりも高速に開始できます。
c# - SonarQube for .NET、すべてのプロジェクトのカバレッジが表示されていません
Visual Studio Team Services (以前は Visual Studio Online) でビルドされた .NET ソリューションがあります。ビルドは、コード カバレッジ データを SonarQube (5.3) にプッシュします。一部のプロジェクトではカバレッジが期待値よりも低く (未加工の *.coverage ファイルで検出されたものと比較して)、他のプロジェクトでは 0% であり、他のプロジェクトではまったく価値がないことがわかります。
残念ながら、私たちのチームには SonarQube の専門家はいませんが、関連すると思われるすべての設定を変更しようとしましたが、うまくいきませんでした。何が起こっているのか、何がこの動作を引き起こしているのかをデバッグするには、どこから始めることができますか?
詳細情報(設定、バージョンなど)を喜んで投稿しますが、どこから始めればよいかわかりません...
sonarqube - MSBuild SonarQube ランナー プロキシ認証
MSBuild.SonarQube.Runner.exe (バージョン 2.0) を実行すると、次のエラーが表示されます。
これは Jenkins Windows スレーブで実行されており、実際にはプロキシ認証が必要です。SonarQube サーバーは、Jenkins マスターまたはスレーブと同じサーバーではありません。
Update Center はサーバーでオフになっています。また、SonarQube.Analysis.xml ファイルに次のプロパティを含めてみました (笑い声のためだけに)。
MSBuild SonarQube Runner の更新機能を無効にすることはできますか?
jenkins - SonarQube MSBuild Runner がテストとコード カバレッジの結果をインポートしない
コードを分析して SonarQube サーバーに投稿するように Jenkins ビルド サーバーを構成しました。スキャン結果は正常に送信されましたが、テストと VS コード カバレッジの結果が SonarQube に送信されません。
MSBuild の分析開始ステップの SonarQube スキャナーに必要な追加の引数を追加しました。
コード カバレッジと単体テストの実行結果をインポートするための SonarQube wiki ページで表現されているように、CodeCoverage.exe を介してカバレッジ コレクションを実行するようにビルド ステップを構成しました。
コンソール出力でも確認しましたが、SonarQube Scanner は両方のファイルを解析しています。すなわち
と
問題を特定して解決し、テストとカバレッジの結果をインポートするにはどうすればよいですか?
msbuild - SonarQube msbuild ランナーがすべての fxcop メッセージをインポートしない
TFS vNext ビルドでは、sonarqube と sonarqube msbuild ランナーを使用します。統合は機能します。予想どおり、新しい分析結果が sonarqube に表示されます。ただし、CodeAnalysisLog.xml のすべての問題が sonarqube にインポートされるわけではありません。分析をローカルで実行すると、それらの問題が報告されます。ビルド サーバーで生成された CodeAnalysisLog.xml を調べると、問題はファイルに存在します。ただし、SonarQube には表示されません。カスタム ルール セットを使用していますが、すべてがローカルおよびサーバー上で正しく構成されています。
ソースコードを調べて、解析とフィルタリングがどのように機能するかを確認しようとしましたが、何も見つかりません。Jira で未解決の問題を確認しましたが、関連するものは何もありません。
これをさらにデバッグするにはどうすればよいですか? そして、他の人も同じことを経験していますか?
sonarqube - VS 単体テスト結果ファイル (.trx) が SonarQube に表示されない
SonarQube を次のようにセットアップしました。
- sonarqube-5.4
- MSBuild.SonarQube.Runner-2.0
- VS 2013 (ターゲット .net フレームワーク 4.5.1)
- SQLServer2014 エクスプレス エディション
- Windows7Professional SP1 64bit OS
上記の設定を使用して、コード分析結果を SonarQube に公開できました。以下のリンクに従って、単体テスト結果 (.trx) ファイルを公開しました: http://docs.sonarqube.org/pages/viewpage.action?pageId=6389772
「begin」コマンドに以下のタグを追加して、VS 単体テストの結果ファイルを取得しました。
以下は、コンソール ウィンドウの下部からキャプチャされた詳細の解析です。
ただし、単体テストの詳細は、プロジェクト ダッシュボードの [コード カバレッジ] タブには表示されません。必要な設定や構成はありますか (C# プラグインは既に追加されています)? SonarQube で単体テストの結果を確認するにはどうすればよいですか?
プロジェクト ダッシュボードの添付のスクリーンショットを見つけてください。単体テストの結果はどこで確認できますか?
2 番目のタブ「カバレッジ」をクリックすると、「このコンポーネントにはカバレッジの詳細がありません」というメッセージが表示されます。
sonarqube - xml の SonarQube C# DotCover レポート
.xml
MSBuild のスキャナーを使用して SonarQube にインポートするときに、DotCover 分析からの出力を使用する方法はありますか?
現在実行中:
- SQ 5.4
- C# プラグイン 5.0
これは、問題の特定の SonarQube プロパティ キーです。sonar.cs.dotcover.reportsPaths
このガイド.html
に示されている例は、拡張子のみが受け入れられることを示しています。何故ですか?私は、レポート出力を保存し.xml
、後でそれをレポートに変換する世界から来てい.html
ます。.xml
出力を使用する方法はありますか?