CoverageReporterManager.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using UnityEngine;
  2. using UnityEditor.TestTools.CodeCoverage.OpenCover;
  3. using UnityEditor.TestTools.CodeCoverage.Analytics;
  4. namespace UnityEditor.TestTools.CodeCoverage
  5. {
  6. internal class CoverageReporterManager
  7. {
  8. private CoverageSettings m_CoverageSettings = null;
  9. private ICoverageReporter m_CoverageReporter = null;
  10. CoverageReportGenerator m_ReportGenerator = null;
  11. public CoverageReporterManager(CoverageSettings coverageSettings)
  12. {
  13. m_CoverageSettings = coverageSettings;
  14. }
  15. public ICoverageReporter CoverageReporter
  16. {
  17. get
  18. {
  19. if (m_CoverageReporter == null)
  20. {
  21. CreateCoverageReporter();
  22. }
  23. return m_CoverageReporter;
  24. }
  25. }
  26. public void CreateCoverageReporter()
  27. {
  28. m_CoverageReporter = null;
  29. // Use OpenCover format as currently this is the only one supported
  30. CoverageFormat coverageFormat = CoverageFormat.OpenCover;
  31. switch (coverageFormat)
  32. {
  33. case CoverageFormat.OpenCover:
  34. m_CoverageSettings.resultsFileExtension = "xml";
  35. m_CoverageSettings.resultsFolderSuffix = "-opencov";
  36. m_CoverageSettings.resultsFileName = CoverageRunData.instance.isRecording ? "RecordingCoverageResults" : "TestCoverageResults";
  37. m_CoverageReporter = new OpenCoverReporter();
  38. break;
  39. }
  40. if (m_CoverageReporter != null)
  41. {
  42. m_CoverageReporter.OnInitialise(m_CoverageSettings);
  43. }
  44. }
  45. public void GenerateReport()
  46. {
  47. bool autoGenerateReport, generateHTMLReport, generateBadge;
  48. if (CommandLineManager.instance.batchmode)
  49. {
  50. generateHTMLReport = CommandLineManager.instance.generateHTMLReport;
  51. generateBadge = CommandLineManager.instance.generateBadgeReport;
  52. autoGenerateReport = generateHTMLReport || generateBadge;
  53. }
  54. else
  55. {
  56. generateHTMLReport = CoveragePreferences.instance.GetBool("GenerateHTMLReport", true);
  57. generateBadge = CoveragePreferences.instance.GetBool("GenerateBadge", true);
  58. autoGenerateReport = CoveragePreferences.instance.GetBool("AutoGenerateReport", true) && (generateHTMLReport || generateBadge);
  59. bool commandLineAutoGenerateReport = CommandLineManager.instance.runFromCommandLine && (CommandLineManager.instance.generateHTMLReport || CommandLineManager.instance.generateBadgeReport);
  60. autoGenerateReport = autoGenerateReport || commandLineAutoGenerateReport;
  61. }
  62. if (!autoGenerateReport)
  63. {
  64. // Clear ProgressBar left from saving results to file,
  65. // otherwise continue on the same ProgressBar
  66. EditorUtility.ClearProgressBar();
  67. // Send Analytics event (Data Only)
  68. CoverageAnalytics.instance.SendCoverageEvent(true);
  69. return;
  70. }
  71. if (m_CoverageSettings != null)
  72. {
  73. CoverageAnalytics.instance.CurrentCoverageEvent.actionID = ActionID.DataReport;
  74. ReportGenerator.Generate(m_CoverageSettings);
  75. }
  76. }
  77. public CoverageReportGenerator ReportGenerator
  78. {
  79. get
  80. {
  81. if (m_ReportGenerator == null)
  82. m_ReportGenerator = new CoverageReportGenerator();
  83. return m_ReportGenerator;
  84. }
  85. }
  86. }
  87. }