Skip to content

[BUG]: computeHealthScore returns NaN when open_issues_count is missing #211

Description

@RounakKumarAgarwal

Bug Description

computeHealthScore() in src/services/analytics.js computes issueHealth with an
unguarded repo.open_issues_count:

const total = (repo.open_issues_count || 0) + 10
const issueHealth = Math.max(0, 100 - (repo.open_issues_count / total) * 100)

The total line defends against a missing open_issues_count with || 0, but the
issueHealth line uses the bare repo.open_issues_count. When the field is absent,
undefined / total is NaN, so issueHealth is NaN and the whole score collapses to
NaN — which then renders in the UI and corrupts any sorting/averaging built on it.

GitHub can omit open_issues_count, and the inconsistency (guarded on one line,
unguarded on the very next) makes this a clear oversight rather than intended behavior.

Steps to Reproduce

  1. Open src/services/analytics.js.
  2. Call computeHealthScore with a repo that has a valid pushed_at but no open_issues_count:
import { computeHealthScore } from './src/services/analytics.js'

computeHealthScore({ pushed_at: new Date().toISOString() }, 2)  // -> NaN
  1. Observe: the score is NaN, with no error thrown.

Logs and Screenshots

Reproduced locally on main (Node v22.17.0):

computeHealthScore({ pushed_at: <valid ISO>, /* no open_issues_count */ }, 2): NaN
computeHealthScore({}, 3): NaN

Environment Details

  • OS: Windows (MINGW64 / Git Bash)
  • Browser: Chrome
  • Node.js: 22.17.0
  • Branch: main
  • Affected function: computeHealthScore (src/services/analytics.js, issueHealth line)
  • Note: the sibling total line already guards this field with || 0; the fix is to
    apply the same guard on the issueHealth line.

Impact

Medium - Feature works but has issues

Code of Conduct

  • I have joined the Discord server and will post updates there
  • I have searched existing issues to avoid duplicates

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions