From 43f8e342e6098ea12efd28293354cb0c17379303 Mon Sep 17 00:00:00 2001 From: Istvan Soos Date: Mon, 10 Sep 2018 11:06:01 +0200 Subject: [PATCH] Store dartdoc report with ScoreCard too. --- app/bin/service/dartdoc.dart | 4 ++++ app/lib/dartdoc/dartdoc_runner.dart | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/app/bin/service/dartdoc.dart b/app/bin/service/dartdoc.dart index b8dc4914c2..39580a2daa 100644 --- a/app/bin/service/dartdoc.dart +++ b/app/bin/service/dartdoc.dart @@ -14,6 +14,8 @@ import 'package:pub_dartlang_org/analyzer/backend.dart'; import 'package:pub_dartlang_org/history/backend.dart'; import 'package:pub_dartlang_org/job/backend.dart'; import 'package:pub_dartlang_org/job/job.dart'; +import 'package:pub_dartlang_org/scorecard/backend.dart'; +import 'package:pub_dartlang_org/scorecard/scorecard_memcache.dart'; import 'package:pub_dartlang_org/shared/analyzer_client.dart'; import 'package:pub_dartlang_org/shared/configuration.dart'; import 'package:pub_dartlang_org/shared/dartdoc_memcache.dart'; @@ -86,4 +88,6 @@ Future _registerServices() async { registerDartdocBackend(new DartdocBackend(dbService, storageBucket)); registerHistoryBackend(new HistoryBackend(dbService)); registerJobBackend(new JobBackend(dbService)); + registerScoreCardMemcache(new ScoreCardMemcache(memcacheService)); + registerScoreCardBackend(new ScoreCardBackend(dbService)); } diff --git a/app/lib/dartdoc/dartdoc_runner.dart b/app/lib/dartdoc/dartdoc_runner.dart index 0132defe71..01ec85ff36 100644 --- a/app/lib/dartdoc/dartdoc_runner.dart +++ b/app/lib/dartdoc/dartdoc_runner.dart @@ -15,6 +15,8 @@ import 'package:uuid/uuid.dart'; import '../analyzer/backend.dart'; import '../job/backend.dart'; import '../job/job.dart'; +import '../scorecard/backend.dart'; +import '../scorecard/models.dart'; import '../shared/analyzer_client.dart'; import '../shared/configuration.dart' show envConfig; import '../shared/urls.dart'; @@ -74,6 +76,8 @@ class DartdocJobProcessor extends JobProcessor { bool depsResolved = false; bool hasContent = false; + String reportStatus = ReportStatus.failed; + final suggestions = []; try { final pkgDir = await downloadPackage(job.packageName, job.packageVersion); if (pkgDir == null) { @@ -129,12 +133,14 @@ class DartdocJobProcessor extends JobProcessor { _logger.severe('Regression detected in $job, aborting upload.'); } else { await dartdocBackend.uploadDir(entry, outputDir); + reportStatus = hasContent ? ReportStatus.success : ReportStatus.failed; } if (!hasContent && isLatestStable) { reportIssueWithLatest(job, 'No content.'); } } catch (e, st) { + reportStatus = ReportStatus.aborted; if (isLatestStable) { reportIssueWithLatest(job, '$e\n$st'); } @@ -143,6 +149,20 @@ class DartdocJobProcessor extends JobProcessor { await tempDir.delete(recursive: true); } + if (!hasContent) { + suggestions.add(getDartdocRunFailedSuggestion()); + } + // TODO: calculate coverage score + await scoreCardBackend.updateReport( + job.packageName, + job.packageVersion, + new DartdocReport( + reportStatus: reportStatus, + coverageScore: hasContent ? 1.0 : 0.0, + suggestions: suggestions.isEmpty ? null : suggestions, + )); + await scoreCardBackend.updateScoreCard(job.packageName, job.packageVersion); + await dartdocBackend.removeObsolete(job.packageName, job.packageVersion); // Trigger analyzer job to pick up the new dartdoc results.