There are a number of reasons the Codecov staff has found to cause line coverage to change. These can be due to:

  1. Adding or removing tests.
  2. Failing to upload coverage reports, or a different number of reports between head and base
  3. Time sensitive tests .
  4. Missing coverage reports or failed builds.
  5. Dependencies changed resulting in a different execute plan.
  6. Encrypted variables may prevent some execution paths.
  7. In the case of changes to a PR, the base or head commits may not have had an uploaded report, or may not be the commit you expect

For steps you can take to determine the reason, please see our docs: https://docs.codecov.io/docs/unexpected-coverage-changes