无法在 Sonarqube 中导入 Google 测试指标

Unable to import Google Test metrics in Sonarqube

我正在使用 TFS 2015(更新 2)、C++、Google 测试和 Sonarqube 5.6(带有 Cxx 社区插件)。 我能够使用 cppcheck 导入覆盖率、计算重复、创建问题,但测试数量未导入 sonarqube。

我需要使用 <test executable> --gtest_output=xml:<filename> 生成类似 Junit 的 XML 文件,但在 TFS (vNext) 中,我使用 VSTestTask,它使用 vstest.console.exe 到 运行 我的 *Test.exe 似乎没有办法输出为 xml (它默认为 .trx)。

有没有人设法将 GTest 测试指标正确导入 sonarqube? XSLT 是从 trx 转换为 xunit 的唯一方法吗...?

可能我需要正确填写 sonar.cxx.vstest.reportsPaths 但 trx 的文件名是由 vstest.console.exe...

动态设置的

谢谢, 乔恩

最简单的方法是将测试结果转换为XML格式。之后,您只需使用默认导入 functionality.To 实现此目的,将 CoverageCoverter.exe 与以下代码一起使用。

class Program
    {
        static int Main(string[] args)
        {
            if ( args.Length != 2)
            {
                Console.WriteLine("Coverage Convert - reads VStest binary code coverage data, and outputs it in XML format.");
                Console.WriteLine("Usage:  ConverageConvert <sourcefile> <destinationfile>");
                return 1;
            }

            CoverageInfo info;
            string path;
            try
            {
                path = System.IO.Path.GetDirectoryName(args[0]);
                info = CoverageInfo.CreateFromFile(args[0], new string[] { path }, new string[] { });
            }
            catch (Exception e)
            {
                Console.WriteLine("Error opening coverage data: {0}",e.Message);
                return 1;
            }

            CoverageDS data = info.BuildDataSet();

            try
            {
                data.WriteXml(args[1]);
            }
            catch (Exception e)
            {

                Console.WriteLine("Error writing to output file: {0}", e.Message);
                return 1;
            }

            return 0;
        }
    }

更多详细信息和方式请参考Publishing vstest results? & MSTest Plugin

我刚把 **/TestResults/*.trx 放在 Visual Studio Test Reports Paths (sonar.cxx.vstest.reportsPaths) 中,现在它正在正确加载...看图。