Global Metrics

path: .metrics.halstead.n2
old: 112.0
new: 95.0

path: .metrics.halstead.length
old: 624.0
new: 530.0

path: .metrics.halstead.bugs
old: 0.7130871535459775
new: 0.6558587346880103

path: .metrics.halstead.N2
old: 298.0
new: 241.0

path: .metrics.halstead.estimated_program_length
old: 831.9106195717073
new: 704.8469055468681

path: .metrics.halstead.time
old: 5496.969102234102
new: 4848.694675051458

path: .metrics.halstead.vocabulary
old: 129.0
new: 114.0

path: .metrics.halstead.purity_ratio
old: 1.3331900954674798
new: 1.3298998217865436

path: .metrics.halstead.N1
old: 326.0
new: 289.0

path: .metrics.halstead.volume
old: 4375.00580738411
new: 3621.4317075073127

path: .metrics.halstead.difficulty
old: 22.616071428571427
new: 24.1

path: .metrics.halstead.level
old: 0.04421634425582314
new: 0.04149377593360996

path: .metrics.halstead.n1
old: 17.0
new: 19.0

path: .metrics.halstead.effort
old: 98945.44384021383
new: 87276.50415092624

path: .metrics.loc.sloc
old: 207.0
new: 146.0

path: .metrics.loc.ploc
old: 134.0
new: 110.0

path: .metrics.loc.cloc
old: 40.0
new: 10.0

path: .metrics.loc.blank
old: 33.0
new: 26.0

path: .metrics.loc.lloc
old: 9.0
new: 47.0

path: .metrics.nargs.average
old: 0.0
new: 4.4

path: .metrics.nargs.sum
old: 0.0
new: 22.0

path: .metrics.cyclomatic.sum
old: 17.0
new: 18.0

path: .metrics.cyclomatic.average
old: 1.0625
new: 2.25

path: .metrics.mi.mi_sei
old: 11.039868433330934
new: 8.629918862384166

path: .metrics.mi.mi_original
old: 37.10490729289786
new: 43.5135241534266

path: .metrics.mi.mi_visual_studio
old: 21.698776194677112
new: 25.446505352881054

path: .metrics.nom.functions
old: 10.0
new: 5.0

path: .metrics.nom.total
old: 10.0
new: 5.0

path: .metrics.cognitive.average
old: 0.1
new: 2.2

path: .metrics.cognitive.sum
old: 1.0
new: 11.0

path: .metrics.nexits.average
old: 0.8
new: 1.4

path: .metrics.nexits.sum
old: 8.0
new: 7.0

Spaces Data

Minimal test - lines (12, 146)

path: .spaces[0].metrics.mi.mi_visual_studio
old: 22.76946776448793
new: 26.38085775969449

path: .spaces[0].metrics.mi.mi_original
old: 38.93578987727436
new: 45.111266769077574

path: .spaces[0].metrics.mi.mi_sei
old: 12.254026071275725
new: 5.799139567816432

path: .spaces[0].metrics.cognitive.average
old: 0.1
new: 2.2

path: .spaces[0].metrics.cognitive.sum
old: 1.0
new: 11.0

path: .spaces[0].metrics.loc.sloc
old: 189.0
new: 135.0

path: .spaces[0].metrics.loc.blank
old: 31.0
new: 25.0

path: .spaces[0].metrics.loc.cloc
old: 33.0
new: 5.0

path: .spaces[0].metrics.loc.lloc
old: 9.0
new: 47.0

path: .spaces[0].metrics.loc.ploc
old: 125.0
new: 105.0

path: .spaces[0].metrics.nom.functions
old: 10.0
new: 5.0

path: .spaces[0].metrics.nom.total
old: 10.0
new: 5.0

path: .spaces[0].metrics.nexits.average
old: 0.8
new: 1.4

path: .spaces[0].metrics.nexits.sum
old: 8.0
new: 7.0

path: .spaces[0].metrics.cyclomatic.sum
old: 16.0
new: 17.0

path: .spaces[0].metrics.cyclomatic.average
old: 1.0666666666666669
new: 2.4285714285714284

path: .spaces[0].metrics.halstead.purity_ratio
old: 1.257277025415907
new: 1.266623621762093

path: .spaces[0].metrics.halstead.time
old: 5568.205715793116
new: 4917.587258937458

path: .spaces[0].metrics.halstead.volume
old: 4269.3341999387385
new: 3553.2967705078863

path: .spaces[0].metrics.halstead.n2
old: 105.0
new: 90.0

path: .spaces[0].metrics.halstead.N1
old: 326.0
new: 289.0

path: .spaces[0].metrics.halstead.N2
old: 290.0
new: 236.0

path: .spaces[0].metrics.halstead.estimated_program_length
old: 774.4826476561987
new: 664.9774014250988

path: .spaces[0].metrics.halstead.n1
old: 17.0
new: 19.0

path: .spaces[0].metrics.halstead.level
old: 0.042596348884381345
new: 0.04014272970561998

path: .spaces[0].metrics.halstead.length
old: 616.0
new: 525.0

path: .spaces[0].metrics.halstead.difficulty
old: 23.47619047619047
new: 24.91111111111111

path: .spaces[0].metrics.halstead.effort
old: 100227.70288427608
new: 88516.57066087423

path: .spaces[0].metrics.halstead.bugs
old: 0.7192346411373284
new: 0.662056619162238

path: .spaces[0].metrics.halstead.vocabulary
old: 122.0
new: 109.0

path: .spaces[0].metrics.nargs.average
old: 0.0
new: 4.4

path: .spaces[0].metrics.nargs.sum
old: 0.0
new: 22.0

Code

namespace mozilla {
namespace widget {

NS_IMPL_ISUPPORTS(AndroidAlerts, nsIAlertsService)

StaticAutoPtr AndroidAlerts::sListenerMap;
nsTHashMap
    AndroidAlerts::mNotificationsMap;

NS_IMETHODIMP
AndroidAlerts::ShowAlertNotification(
    const nsAString& aImageUrl, const nsAString& aAlertTitle,
    const nsAString& aAlertText, bool aAlertTextClickable,
    const nsAString& aAlertCookie, nsIObserver* aAlertListener,
    const nsAString& aAlertName, const nsAString& aBidi, const nsAString& aLang,
    const nsAString& aData, nsIPrincipal* aPrincipal, bool aInPrivateBrowsing,
    bool aRequireInteraction) {
  MOZ_ASSERT_UNREACHABLE("Should be implemented by nsAlertsService.");
  return NS_ERROR_NOT_IMPLEMENTED;
}

NS_IMETHODIMP
AndroidAlerts::ShowAlert(nsIAlertNotification* aAlert,
                         nsIObserver* aAlertListener) {
  return ShowPersistentNotification(u""_ns, aAlert, aAlertListener);
}

NS_IMETHODIMP
AndroidAlerts::ShowPersistentNotification(const nsAString& aPersistentData,
                                          nsIAlertNotification* aAlert,
                                          nsIObserver* aAlertListener) {
  // nsAlertsService disables our alerts backend if we ever return failure
  // here. To keep the backend enabled, we always return NS_OK even if we
  // encounter an error here.
  nsresult rv;

  nsAutoString imageUrl;
  rv = aAlert->GetImageURL(imageUrl);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsAutoString title;
  rv = aAlert->GetTitle(title);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsAutoString text;
  rv = aAlert->GetText(text);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsAutoString cookie;
  rv = aAlert->GetCookie(cookie);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsAutoString name;
  rv = aAlert->GetName(name);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsAutoString lang;
  rv = aAlert->GetLang(lang);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsAutoString dir;
  rv = aAlert->GetDir(dir);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  bool requireInteraction;
  rv = aAlert->GetRequireInteraction(&requireInteraction);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsCOMPtr uri;
  rv = aAlert->GetURI(getter_AddRefs(uri));
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsCString spec;
  if (uri) {
    rv = uri->GetDisplaySpec(spec);
    NS_ENSURE_SUCCESS(rv, NS_OK);
  }

  if (aPersistentData.IsEmpty() && aAlertListener) {
    if (!sListenerMap) {
      sListenerMap = new ListenerMap();
    }
    // This will remove any observers already registered for this name.
    sListenerMap->InsertOrUpdate(name, aAlertListener);
  }

  java::WebNotification::LocalRef notification = notification->New(
      title, name, cookie, text, imageUrl, dir, lang, requireInteraction, spec);
  java::GeckoRuntime::LocalRef runtime = java::GeckoRuntime::GetInstance();
  if (runtime != NULL) {
    runtime->NotifyOnShow(notification);
  }
  mNotificationsMap.InsertOrUpdate(name, notification);

  return NS_OK;
}

NS_IMETHODIMP
AndroidAlerts::CloseAlert(const nsAString& aAlertName) {
  java::WebNotification::LocalRef notification =
      mNotificationsMap.Get(aAlertName);
  if (!notification) {
    return NS_OK;
  }

  java::GeckoRuntime::LocalRef runtime = java::GeckoRuntime::GetInstance();
  if (runtime != NULL) {
    runtime->NotifyOnClose(notification);
  }
  mNotificationsMap.Remove(aAlertName);

  return NS_OK;
}

void AndroidAlerts::NotifyListener(const nsAString& aName, const char* aTopic,
                                   const char16_t* aCookie) {
  if (!sListenerMap) {
    return;
  }

  nsCOMPtr listener = sListenerMap->Get(aName);
  if (!listener) {
    return;
  }

  listener->Observe(nullptr, aTopic, aCookie);

  if ("alertfinished"_ns.Equals(aTopic)) {
    sListenerMap->Remove(aName);
    mNotificationsMap.Remove(aName);
  }
}

}  // namespace widget
}  // namespace mozilla

Minimal test - lines (13, 145)

path: .spaces[0].spaces[0].metrics.cyclomatic.average
old: 1.0714285714285714
new: 2.6666666666666665

path: .spaces[0].spaces[0].metrics.cyclomatic.sum
old: 15.0
new: 16.0

path: .spaces[0].spaces[0].metrics.nargs.average
old: 0.0
new: 4.4

path: .spaces[0].spaces[0].metrics.nargs.sum
old: 0.0
new: 22.0

path: .spaces[0].spaces[0].metrics.halstead.vocabulary
old: 121.0
new: 108.0

path: .spaces[0].spaces[0].metrics.halstead.effort
old: 100342.87645203977
new: 88617.86247536303

path: .spaces[0].spaces[0].metrics.halstead.estimated_program_length
old: 766.3325989879293
new: 657.0508981114376

path: .spaces[0].spaces[0].metrics.halstead.n2
old: 104.0
new: 89.0

path: .spaces[0].spaces[0].metrics.halstead.level
old: 0.04233665784652962
new: 0.03986562150055991

path: .spaces[0].spaces[0].metrics.halstead.purity_ratio
old: 1.24809869542008
new: 1.2563114686643166

path: .spaces[0].spaces[0].metrics.halstead.N2
old: 289.0
new: 235.0

path: .spaces[0].spaces[0].metrics.halstead.N1
old: 325.0
new: 288.0

path: .spaces[0].spaces[0].metrics.halstead.time
old: 5574.604247335542
new: 4923.214581964613

path: .spaces[0].spaces[0].metrics.halstead.n1
old: 17.0
new: 19.0

path: .spaces[0].spaces[0].metrics.halstead.difficulty
old: 23.620192307692307
new: 25.084269662921347

path: .spaces[0].spaces[0].metrics.halstead.bugs
old: 0.719785526507989
new: 0.6625615952913702

path: .spaces[0].spaces[0].metrics.halstead.volume
old: 4248.182027686601
new: 3532.8061636314937

path: .spaces[0].spaces[0].metrics.halstead.length
old: 614.0
new: 523.0

path: .spaces[0].spaces[0].metrics.nom.functions
old: 10.0
new: 5.0

path: .spaces[0].spaces[0].metrics.nom.total
old: 10.0
new: 5.0

path: .spaces[0].spaces[0].metrics.loc.sloc
old: 187.0
new: 133.0

path: .spaces[0].spaces[0].metrics.loc.lloc
old: 9.0
new: 47.0

path: .spaces[0].spaces[0].metrics.loc.ploc
old: 123.0
new: 103.0

path: .spaces[0].spaces[0].metrics.loc.blank
old: 32.0
new: 26.0

path: .spaces[0].spaces[0].metrics.loc.cloc
old: 32.0
new: 4.0

path: .spaces[0].spaces[0].metrics.mi.mi_sei
old: 12.510686928652715
new: 5.006299960483377

path: .spaces[0].spaces[0].metrics.mi.mi_visual_studio
old: 23.01985910143333
new: 26.674348339122275

path: .spaces[0].spaces[0].metrics.mi.mi_original
old: 39.36395906345099
new: 45.613135659899086

path: .spaces[0].spaces[0].metrics.cognitive.average
old: 0.1
new: 2.2

path: .spaces[0].spaces[0].metrics.cognitive.sum
old: 1.0
new: 11.0

path: .spaces[0].spaces[0].metrics.nexits.average
old: 0.8
new: 1.4

path: .spaces[0].spaces[0].metrics.nexits.sum
old: 8.0
new: 7.0

Code

namespace widget {

NS_IMPL_ISUPPORTS(AndroidAlerts, nsIAlertsService)

StaticAutoPtr AndroidAlerts::sListenerMap;
nsTHashMap
    AndroidAlerts::mNotificationsMap;

NS_IMETHODIMP
AndroidAlerts::ShowAlertNotification(
    const nsAString& aImageUrl, const nsAString& aAlertTitle,
    const nsAString& aAlertText, bool aAlertTextClickable,
    const nsAString& aAlertCookie, nsIObserver* aAlertListener,
    const nsAString& aAlertName, const nsAString& aBidi, const nsAString& aLang,
    const nsAString& aData, nsIPrincipal* aPrincipal, bool aInPrivateBrowsing,
    bool aRequireInteraction) {
  MOZ_ASSERT_UNREACHABLE("Should be implemented by nsAlertsService.");
  return NS_ERROR_NOT_IMPLEMENTED;
}

NS_IMETHODIMP
AndroidAlerts::ShowAlert(nsIAlertNotification* aAlert,
                         nsIObserver* aAlertListener) {
  return ShowPersistentNotification(u""_ns, aAlert, aAlertListener);
}

NS_IMETHODIMP
AndroidAlerts::ShowPersistentNotification(const nsAString& aPersistentData,
                                          nsIAlertNotification* aAlert,
                                          nsIObserver* aAlertListener) {
  // nsAlertsService disables our alerts backend if we ever return failure
  // here. To keep the backend enabled, we always return NS_OK even if we
  // encounter an error here.
  nsresult rv;

  nsAutoString imageUrl;
  rv = aAlert->GetImageURL(imageUrl);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsAutoString title;
  rv = aAlert->GetTitle(title);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsAutoString text;
  rv = aAlert->GetText(text);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsAutoString cookie;
  rv = aAlert->GetCookie(cookie);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsAutoString name;
  rv = aAlert->GetName(name);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsAutoString lang;
  rv = aAlert->GetLang(lang);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsAutoString dir;
  rv = aAlert->GetDir(dir);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  bool requireInteraction;
  rv = aAlert->GetRequireInteraction(&requireInteraction);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsCOMPtr uri;
  rv = aAlert->GetURI(getter_AddRefs(uri));
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsCString spec;
  if (uri) {
    rv = uri->GetDisplaySpec(spec);
    NS_ENSURE_SUCCESS(rv, NS_OK);
  }

  if (aPersistentData.IsEmpty() && aAlertListener) {
    if (!sListenerMap) {
      sListenerMap = new ListenerMap();
    }
    // This will remove any observers already registered for this name.
    sListenerMap->InsertOrUpdate(name, aAlertListener);
  }

  java::WebNotification::LocalRef notification = notification->New(
      title, name, cookie, text, imageUrl, dir, lang, requireInteraction, spec);
  java::GeckoRuntime::LocalRef runtime = java::GeckoRuntime::GetInstance();
  if (runtime != NULL) {
    runtime->NotifyOnShow(notification);
  }
  mNotificationsMap.InsertOrUpdate(name, notification);

  return NS_OK;
}

NS_IMETHODIMP
AndroidAlerts::CloseAlert(const nsAString& aAlertName) {
  java::WebNotification::LocalRef notification =
      mNotificationsMap.Get(aAlertName);
  if (!notification) {
    return NS_OK;
  }

  java::GeckoRuntime::LocalRef runtime = java::GeckoRuntime::GetInstance();
  if (runtime != NULL) {
    runtime->NotifyOnClose(notification);
  }
  mNotificationsMap.Remove(aAlertName);

  return NS_OK;
}

void AndroidAlerts::NotifyListener(const nsAString& aName, const char* aTopic,
                                   const char16_t* aCookie) {
  if (!sListenerMap) {
    return;
  }

  nsCOMPtr listener = sListenerMap->Get(aName);
  if (!listener) {
    return;
  }

  listener->Observe(nullptr, aTopic, aCookie);

  if ("alertfinished"_ns.Equals(aTopic)) {
    sListenerMap->Remove(aName);
    mNotificationsMap.Remove(aName);
  }
}

}  // namespace widget

Minimal test - lines (40, 107)

path: .spaces[0].spaces[0].spaces[2].metrics.nexits.sum
old: 0.0
new: 1.0

path: .spaces[0].spaces[0].spaces[2].metrics.nexits.average
old: null
new: 1.0

path: .spaces[0].spaces[0].spaces[2].metrics.cognitive.average
old: null
new: 6.0

path: .spaces[0].spaces[0].spaces[2].metrics.cognitive.sum
old: 0.0
new: 6.0

path: .spaces[0].spaces[0].spaces[2].metrics.nom.total
old: 0.0
new: 1.0

path: .spaces[0].spaces[0].spaces[2].metrics.nom.functions
old: 0.0
new: 1.0

path: .spaces[0].spaces[0].spaces[2].metrics.mi.mi_sei
old: 52.613419515858
new: 33.39558200304107

path: .spaces[0].spaces[0].spaces[2].metrics.mi.mi_visual_studio
old: 51.97081834667412
new: 36.53725402040642

path: .spaces[0].spaces[0].spaces[2].metrics.mi.mi_original
old: 88.87009937281275
new: 62.478704374894974

path: .spaces[0].spaces[0].spaces[2].metrics.nargs.average
old: null
new: 3.0

path: .spaces[0].spaces[0].spaces[2].metrics.nargs.sum
old: 0.0
new: 3.0

path: .spaces[0].spaces[0].spaces[2].metrics.loc.cloc
old: 0.0
new: 4.0

path: .spaces[0].spaces[0].spaces[2].metrics.loc.blank
old: 3.0
new: 13.0

path: .spaces[0].spaces[0].spaces[2].metrics.loc.lloc
old: 0.0
new: 29.0

path: .spaces[0].spaces[0].spaces[2].metrics.loc.ploc
old: 20.0
new: 51.0

path: .spaces[0].spaces[0].spaces[2].metrics.loc.sloc
old: 23.0
new: 68.0

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.n1
old: 10.0
new: 19.0

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.bugs
old: 0.05571006715967356
new: 0.4343740963166748

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.time
old: 120.03555366462216
new: 2613.39619592003

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.difficulty
old: 5.454545454545454
new: 27.114583333333332

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.length
old: 73.0
new: 286.0

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.volume
old: 396.1173270932531
new: 1734.9015084709229

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.N1
old: 37.0
new: 149.0

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.purity_ratio
old: 2.7354011902425013
new: 1.219541338426726

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.N2
old: 36.0
new: 137.0

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.effort
old: 2160.639965963199
new: 47041.131526560544

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.level
old: 0.18333333333333335
new: 0.03688052247406839

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.n2
old: 33.0
new: 48.0

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.vocabulary
old: 43.0
new: 67.0

path: .spaces[0].spaces[0].spaces[2].metrics.halstead.estimated_program_length
old: 199.6842868877026
new: 348.78882279004364

path: .spaces[0].spaces[0].spaces[2].metrics.cyclomatic.sum
old: 1.0
new: 6.0

path: .spaces[0].spaces[0].spaces[2].metrics.cyclomatic.average
old: 1.0
new: 6.0

Code

AndroidAlerts::ShowPersistentNotification(const nsAString& aPersistentData,
                                          nsIAlertNotification* aAlert,
                                          nsIObserver* aAlertListener) {
  // nsAlertsService disables our alerts backend if we ever return failure
  // here. To keep the backend enabled, we always return NS_OK even if we
  // encounter an error here.
  nsresult rv;

  nsAutoString imageUrl;
  rv = aAlert->GetImageURL(imageUrl);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsAutoString title;
  rv = aAlert->GetTitle(title);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsAutoString text;
  rv = aAlert->GetText(text);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsAutoString cookie;
  rv = aAlert->GetCookie(cookie);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsAutoString name;
  rv = aAlert->GetName(name);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsAutoString lang;
  rv = aAlert->GetLang(lang);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsAutoString dir;
  rv = aAlert->GetDir(dir);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  bool requireInteraction;
  rv = aAlert->GetRequireInteraction(&requireInteraction);
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsCOMPtr uri;
  rv = aAlert->GetURI(getter_AddRefs(uri));
  NS_ENSURE_SUCCESS(rv, NS_OK);

  nsCString spec;
  if (uri) {
    rv = uri->GetDisplaySpec(spec);
    NS_ENSURE_SUCCESS(rv, NS_OK);
  }

  if (aPersistentData.IsEmpty() && aAlertListener) {
    if (!sListenerMap) {
      sListenerMap = new ListenerMap();
    }
    // This will remove any observers already registered for this name.
    sListenerMap->InsertOrUpdate(name, aAlertListener);
  }

  java::WebNotification::LocalRef notification = notification->New(
      title, name, cookie, text, imageUrl, dir, lang, requireInteraction, spec);
  java::GeckoRuntime::LocalRef runtime = java::GeckoRuntime::GetInstance();
  if (runtime != NULL) {
    runtime->NotifyOnShow(notification);
  }
  mNotificationsMap.InsertOrUpdate(name, notification);

  return NS_OK;
}

Minimal test - lines (34, 37)

path: .spaces[0].spaces[0].spaces[1].metrics.loc.ploc
old: 96.0
new: 4.0

path: .spaces[0].spaces[0].spaces[1].metrics.loc.cloc
old: 2.0
new: 0.0

path: .spaces[0].spaces[0].spaces[1].metrics.loc.sloc
old: 117.0
new: 4.0

path: .spaces[0].spaces[0].spaces[1].metrics.loc.blank
old: 19.0
new: 0.0

path: .spaces[0].spaces[0].spaces[1].metrics.loc.lloc
old: 9.0
new: 1.0

path: .spaces[0].spaces[0].spaces[1].metrics.cognitive.average
old: 0.1
new: 0.0

path: .spaces[0].spaces[0].spaces[1].metrics.cognitive.sum
old: 1.0
new: 0.0

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.n2
old: 83.0
new: 8.0

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.purity_ratio
old: 1.1380515990552291
new: 2.0786421168763445

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.time
old: 4871.249565594568
new: 19.94142074841848

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.N1
old: 281.0
new: 11.0

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.bugs
old: 0.6578910860555601
new: 0.01683569876963146

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.volume
old: 3494.668355821505
new: 82.0447025077789

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.level
old: 0.03985594237695078
new: 0.22857142857142856

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.N2
old: 245.0
new: 10.0

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.length
old: 526.0
new: 21.0

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.vocabulary
old: 100.0
new: 15.0

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.effort
old: 87682.49218070222
new: 358.94557347153267

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.estimated_program_length
old: 598.6151411030505
new: 43.65148445440323

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.n1
old: 17.0
new: 7.0

path: .spaces[0].spaces[0].spaces[1].metrics.halstead.difficulty
old: 25.09036144578313
new: 4.375

path: .spaces[0].spaces[0].spaces[1].metrics.nexits.average
old: 0.8
new: 1.0

path: .spaces[0].spaces[0].spaces[1].metrics.nexits.sum
old: 8.0
new: 1.0

path: .spaces[0].spaces[0].spaces[1].metrics.mi.mi_original
old: 48.6660147088145
new: 125.39425724332408

path: .spaces[0].spaces[0].spaces[1].metrics.mi.mi_sei
old: 5.78949284243922
new: 105.30664094829032

path: .spaces[0].spaces[0].spaces[1].metrics.mi.mi_visual_studio
old: 28.459657724452924
new: 73.32997499609597

path: .spaces[0].spaces[0].spaces[1].metrics.cyclomatic.sum
old: 12.0
new: 1.0

path: .spaces[0].spaces[0].spaces[1].metrics.cyclomatic.average
old: 1.0909090909090908
new: 1.0

path: .spaces[0].spaces[0].spaces[1].metrics.nom.functions
old: 10.0
new: 1.0

path: .spaces[0].spaces[0].spaces[1].metrics.nom.total
old: 10.0
new: 1.0

path: .spaces[0].spaces[0].spaces[1].metrics.nargs.average
old: 0.0
new: 2.0

path: .spaces[0].spaces[0].spaces[1].metrics.nargs.sum
old: 0.0
new: 2.0

Code

AndroidAlerts::ShowAlert(nsIAlertNotification* aAlert,
                         nsIObserver* aAlertListener) {
  return ShowPersistentNotification(u""_ns, aAlert, aAlertListener);
}

Minimal test - lines (22, 31)

path: .spaces[0].spaces[0].spaces[0].metrics.nom.functions
old: 0.0
new: 1.0

path: .spaces[0].spaces[0].spaces[0].metrics.nom.total
old: 0.0
new: 1.0

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.level
old: null
new: 0.1646090534979424

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.n1
old: 0.0
new: 9.0

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.N1
old: 0.0
new: 32.0

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.purity_ratio
old: null
new: 1.9486082527242043

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.volume
old: 0.0
new: 286.62087871252675

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.bugs
old: 0.0
new: 0.04824453766769427

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.n2
old: 1.0
new: 20.0

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.effort
old: 0.0
new: 1741.2218381786

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.estimated_program_length
old: null
new: 114.96788691072804

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.vocabulary
old: 1.0
new: 29.0

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.N2
old: 1.0
new: 27.0

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.length
old: 1.0
new: 59.0

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.difficulty
old: 0.0
new: 6.075

path: .spaces[0].spaces[0].spaces[0].metrics.halstead.time
old: 0.0
new: 96.7345465654778

path: .spaces[0].spaces[0].spaces[0].metrics.nexits.average
old: null
new: 1.0

path: .spaces[0].spaces[0].spaces[0].metrics.nexits.sum
old: 0.0
new: 1.0

path: .spaces[0].spaces[0].spaces[0].metrics.mi.mi_sei
old: null
new: 74.50716540679782

path: .spaces[0].spaces[0].spaces[0].metrics.mi.mi_visual_studio
old: null
new: 60.84543135030032

path: .spaces[0].spaces[0].spaces[0].metrics.mi.mi_original
old: null
new: 104.04568760901354

path: .spaces[0].spaces[0].spaces[0].metrics.loc.lloc
old: 0.0
new: 2.0

path: .spaces[0].spaces[0].spaces[0].metrics.loc.ploc
old: 1.0
new: 10.0

path: .spaces[0].spaces[0].spaces[0].metrics.loc.sloc
old: 1.0
new: 10.0

path: .spaces[0].spaces[0].spaces[0].metrics.nargs.average
old: null
new: 13.0

path: .spaces[0].spaces[0].spaces[0].metrics.nargs.sum
old: 0.0
new: 13.0

path: .spaces[0].spaces[0].spaces[0].metrics.cognitive.average
old: null
new: 0.0

Code

AndroidAlerts::ShowAlertNotification(
    const nsAString& aImageUrl, const nsAString& aAlertTitle,
    const nsAString& aAlertText, bool aAlertTextClickable,
    const nsAString& aAlertCookie, nsIObserver* aAlertListener,
    const nsAString& aAlertName, const nsAString& aBidi, const nsAString& aLang,
    const nsAString& aData, nsIPrincipal* aPrincipal, bool aInPrivateBrowsing,
    bool aRequireInteraction) {
  MOZ_ASSERT_UNREACHABLE("Should be implemented by nsAlertsService.");
  return NS_ERROR_NOT_IMPLEMENTED;
}