上記までは全然つまらずにSonarQubeのドキュメント通りに進めれば問題なく進められる。Memoryエラーが発生することくらい。MemoryについてはSonarQubeのドキュメントにも書いてあり、環境変数を設定する。Taskが分割されていた場合には、単純に上記の設定ではコードカバレッジの連携がうまくいかないことが分かったためである。Taskを順番に実行していた。Test4という名前だとする。VSTSのエージェント側ではTest毎にビルド用フォルダ内に、trxファイルとcoverageファイルが生成される。Taskでファイルは上書きされ、差し替えられるようになっている。taskが実行されるタイミングでは、最後のTest4のタスクについてのtrxファイルとcoverageファイルしか残っていないため、すべてのテストについてのテスト結果やcoverageファイルをSonarQubeに連携できないという状態だった。Pipelineの実行において、trxファイル、coverageファイルともに、1ファイルずつしか扱えないようで、この方法は断念した。したがって、Sonarqubeに連携するにはどうにかしてtrxファイルとcoverageファイルをマージする必要がある。trxファイルのマージtrxファイルのマージはいろいろとググった結果、TRX-Mergerというものがあり、これを使ってマージすることで問題なくなった。Studioで用意されているexeを利用すればいいことが分かった。変換する方法が書いてあるだけだったが、exeから複数のcoverageのファイルパスを並べて実行してしまえば問題なかった。...というわけで、書いた大作のpowershellが↓です。ところどころにGet-Locationと書いてありますが、これはデバッグ用に書いたもので消してないだけなのでうまく無視していください。前提としてフォルダ構成はこんな感じになっていると思って読んでください。2017用のパスを利用していますが、適宜別のバージョンに読み替えればなんとかなるかと思っています。2.*)を利用しています。←ここはVSTSのagentの実行者の設定などによって、テスト結果のtrxファイルやcoverageファイルが出力されるフォルダ名が変わるので、こうしています。2.*)を利用しています。...trxファイルをマージして、一つのtrxファイルに変換するTRX_Merger.exeはビルド後のものを利用しているので、パスがビルドされたものっぽいところになっています。Taskで記述しています。Taskを使っただけです。Propertiesのところで、下記の2行を追記する。sonar.cs.vscoveragexml.reportsPaths=**/Summary.coveragexmlsonar.cs.vstest.reportsPaths=**/Summary.trx以上で、SonarQubeまでのコードカバレッジの連携がうまくいくようになった。すごく長いものを書いてしまい、これは2回に分けて書くくらいでもよかったのかもしれないと感じた・・・。前に自社のASP.NETの製品に置いてWeb.configのカスタム部分をCLIで設定できるようにする作業をやっていた。今回はその際に学んだ(正確には昔Javaでstrutsとか扱っていた際にも一度学んだような気もする)ものを書いておく。XDT変換する際に利用するXMLはこのようなものである。</appSettings></configuration>この設定によって、configuration/appSettingsの中のhogeKeyの要素が削除されることになるというのは知っていたがこのxdtであるとかURLとかが何者であるかが分かっていないと、XDT変換用のxmlを生成するプログラムを書こうと思った際に、ドキュメントなどを読んでも、理解が難しかったので、メモをしておきたい。</hoge>と要素に囲まれた中身をコンテンツという。/>と書かれた場合に、これはhogeタグのsrc属性の属性値は"img.png"ということを意味する。-->と書かれたものはコメント。今回私がよく分かっていなかったのは下記の表現である。いう別名をつけています。xdt:TransformというのはXDTで定められたスキーマ内のxdt:Transform属性に"Remove"を設定し、XDTで定められたスキーマ内のxdt:Locator属性"Match(key)"を設定している。02:11XMLの名前空間Tweet広告を非表示にするもっと読むコメントを書く2015-12-08ECMA376のリファレンスを使ってxlsxファイルの中身を見る。XML形式をサポートするようになったこと、xlsxファイルはxmlファイルをzip圧縮したものであることはみなさんご存知だと思います。中身のxmlファイルについてはみなさんよく知らないと思いますので、この記事では、その中身について少し読めるようになりみましょう、という内容を書きたいと思います。中身を読み解くのは簡単です。ECMA376で標準化されているため、立派なリファレンスがあります。4を読めば、現在の仕様が分かるということになっています。リファレンスのpdfを開いて読んでみましょう。1のリンクをクリックして、zipファイルを展開して、PDFを開いて・・・。・・・ちょっと、5000ページというのは厳しいですね。いうわけで、方向転換して、ECMA-376のリファレンスと突き合わせながら、Excelで設定した内容とxmlファイルがどう対応しているのかを見て行くという、しょうもないことをやろうと思います。(ここまでが記事の説明)※なお、少し時間がなく出してしまっているので、誤りがあり可能性があります。記述内容に誤りがあった場合には訂正させていただきますので、コメントなどで指摘いただければと思います。いうわけで、ここから作業をしていきます。何も記入していないブックを用意します。このブックをno-edited.xlsxというファイル名で保存し、拡張子をzipに変更して、展開します。xmlファイルが出てきました。最初の[Content_Types].xmlファイルを見てみましょう。/></Types>xmlnsでhttp://schemas.openxmlformats.org/package/2006/content-typesを指定しています。rels、xml、...よく分かりませんね。PartName要素は展開されたファイルパスと合致していそうです。あ、そうそう、展開したファイルの一覧は↓のようになっています。┗theme1.xml┗worksheets/┗sheet1.xmlどれもぱっと見、よく分からないので、とりあえず、階層が浅いもの→ファイルが少ないフォルダの順に見て行きましょう。.relsファイルはこうなっています。/></Relationships>app.xmlとか、core.xmlとか見たことがあるファイルがいますね。.relsという名前からもこのファイルがzipファイル内の関連を記述しているような感じがあります。次にapp.xmlです。<AppVersion>15.0300</AppVersion></Properties>この辺りから、少しだけ意味の分かるものが出てきます。Application要素ですが、これは何でしょうか。Excel用のファイルであるということを明示しているのでしょうか。あと、"ワークシート"という日本語がいきなり出てきたのも気になります。最後のAppVersionはExcel2013のバージョンで保存したことを表現しているのでしょうか。この記事を書くのに使用したExcelはExcel2013で、バージョン情報を表示すると、15.0.4771.1000と表示されました。Reference.pdf)内で検索してみましょう。DOCPROPERTY』辺りが定義でしょうか。MSDN辺りでも検索してみると、下記のようなページがひっかかります。https://msdn.microsoft.com/ja-jp/library/documentformat.openxml.extendedproperties.scalecrop(v=office.14).aspxなるほど、ScaleCropはファイルをサムネイル表示するモードなんですかね。(ググったらある・・・!)。サムネイル表示されるファイルを作ってファイルを展開して中身を見てみましょう。<AppVersion>15.0300</AppVersion></Properties>あれ、変わってない!?ああ、サムネイル表示するモードではなくて、サムネイルが表示モードによって大きいものになったり小さいものになったりするモードのON/OFF表現なんですね。それをExcelで設定する方法が分からない。これについてはここまでとします。ScaleCrop以外の要素についてもMSDNには記述されているので、もし必要になったら読むとよさそうです。気を取り直して、core.xmlです。xsi:type="dcterms:W3CDTF">2015-12-07T05:00:16Z</dcterms:modified></cp:coreProperties>おや、これはファイルのプロパティの情報のようですね。Conventions.pdfの41ページ付近に書いてあります。pdfファイルを見ると、4要素だけではないですね。タイトルやバージョン番号など、様々な要素を設定することができるようです。いうば、確かにWindowsでファイルのプロパティ情報を見ても4要素以外にたくさん設定されています。ここまでエクセルファイルの中身について記述がされていないですね。いうことは残っているxl/フォルダ以下がエクセルファイルの中身(シートの情報など)を表現しているのでしょうきっと。xlフォルダの中身を見ていきます。xl/styles.xmlです。</extLst></styleSheet>styles.xmlはファイル名の通り、書式スタイルを定義しているように見えますね。ここにも"標準"と日本語が設定されています。これはエクセルのリボンにあるスタイルのうち、左上にある文字列を表現しているのでしょうか?あとは最後のext要素の中身は何を指しているのかよく分かりませんね。Styles』辺りが定義のように見えます。探すのも読むのも大変ですね。ここはwebの力を使って、PDF検索より楽なものを探しましょう。いうわけで、↓を使います。samplesさて、検索が楽になったので、font要素の最初のものを下記を参考に見てみましょう。</font>フォントサイズが9。