NavigaraNavigara
OrganizationsDistributionCompareResearch
NavigaraNavigara
OrganizationsDistributionCompareResearch
All developers

Éamonn McManus

Developer

Éamonn McManus

emcmanus@google.com

11 commits~3 files/commit

Performance

YoY:+225%
2026Previous year

Insights

Key patterns and highlights from this developer's activity.

Peak MonthMar'2535 performance
Growth Trend↑0%vs prior period
Avg Files/Commit3files per commit
Active Days11of 455 days
Top Repoguava11 commits

Effort Over Time

Breakdown of growth, maintenance, and fixes effort over time.

Bug Behavior

Beta

Bugs introduced vs. fixed over time.

No bugs introduced or fixed in this period.

Investment Quality

Beta

Reclassifies engineering effort based on bug attribution. Commits that introduced bugs are retrospectively counted as poor investments.

35%Productive TimeGrowth 0% + Fixes 100%
65%Maintenance Time
0%Wasted Time
How it works

Methodology

Investment Quality reclassifies engineering effort based on bug attribution data. Commits identified as buggy origins (those that introduced bugs later fixed by someone) have their grow and maintenance time moved into the Wasted Time category. Their waste (fix commits) remains counted as productive. All other commits retain their standard classification: grow is productive, maintenance is maintenance, and waste (fixes) is productive.

Relationship to Growth / Maintenance / Fixes

The standard model classifies commits as Growth, Maintenance, or Fixes. Investment Quality adds a quality lens: a commit that introduced a bug is retrospectively counted as a poor investment — the engineering time spent on it was wasted because it ultimately required additional fix work. Fix commits (Fixes in the standard model) are reframed as productive, because fixing bugs is valuable work.

Proposed API Endpoint

Currently computed client-side from commit and bug attribution data. Ideal server-side endpoint:

POST /v1/organizations/{orgId}/investment-quality
Content-Type: application/json

Request:
{
  "startTime": "2025-01-01T00:00:00Z",
  "endTime": "2025-12-31T23:59:59Z",
  "bucketSize": "BUCKET_SIZE_MONTH",
  "groupBy": ["repository_id" | "deliverer_email"]
}

Response:
{
  "productivePct": 74,
  "maintenancePct": 18,
  "wastedPct": 8,
  "buckets": [
    {
      "bucketStart": "2025-01-01T00:00:00Z",
      "productive": 4.2,
      "maintenance": 1.8,
      "wasted": 0.6
    }
  ]
}

Recent Activity

Latest analyzed commits from this developer.

HashMessageDateFilesEffort
3550b98This commit **updates the documentation** within the **`LongMath`** class by adding a crucial comment to the `lessThanBranchFree` method. The new comment explains the use of double negation (`~~`) to ensure **GWT compatibility** for this branch-free comparison. This **maintenance** task improves code clarity, helping developers understand the specific implementation detail and its rationale for cross-platform compilation.Mar 92maint
07ad9feThis commit **fixes a potential hash collision issue** within the **Guava library's `CaseFormat` utility**. It **improves the `hashCode` implementation** for objects returned by the `CaseFormat.converterTo` method, which previously used an XOR-based calculation. The old approach could lead to identical hash codes for `A.converterTo(B)` and `B.converterTo(A)`, and zero for `A.converterTo(A)`. This **maintenance improvement** ensures better distribution and uniqueness of hash codes, preventing unexpected behavior or performance degradation when these converter objects are used in hash-based collections.Dec 32waste
c91bd2aThis commit **refactors** the `toString()` implementations within the **`com.google.common.base.CharMatcher`** class, specifically for its `And` and `Or` nested types. Previously, these methods produced output that incorrectly suggested static method calls; they now accurately reflect their instance-based composition, consistent with `CharMatcher.negate()`. This **maintenance** change improves the clarity and consistency of debugging information without altering functional behavior. Corresponding **unit tests** in `CharMatcherTest.java` have been updated to assert the new `toString()` formats and utilize `Truth.assertThat`.Nov 74maint
201c950This commit performs a **refactoring** within the **`com.google.common.net.MediaType`** class, affecting both the core Guava and Android Guava implementations. It renames a local variable from `builder` to `updatedParameters` inside the `withParameters` method to enhance **code clarity and readability**. This change is purely an internal code improvement, ensuring **no functional impact** or alteration of the public API for users of the `MediaType` class.Oct 22maint
087f2c4This commit **fixes** several issues related to **exception handling** within the **`com.google.common.cache`** module, specifically for methods like `Cache.asMap().computeIfAbsent`. It refines the `LocalCache` implementation by **moving the evaluation of the compute function to occur before any potential entry creation**, ensuring that if an exception is thrown, no incomplete or erroneous cache entry is ever created. Additionally, the commit **removes the unnecessary storage of exceptions** within `ComputingValueReference`, as these stored exceptions were not utilized. This change provides more robust and predictable behavior for cache users when compute functions encounter errors.Sep 112waste
148cea0This commit **fixes a potential `ArrayStoreException`** within the **Guava `Strings.lenientFormat` method**. Previously, `lenientFormat` could attempt to assign `String` values back into its varargs array argument, which is problematic if the array was explicitly passed and its component type was incompatible (e.g., `Object[]` of `Integer`s). The **bug fix** modifies `lenientFormat` to prevent this assignment, instead applying `lenientToString` directly when appending arguments. This ensures **more robust and predictable behavior** for all callers, especially when passing explicitly typed arrays, and is verified by new test cases.Aug 274waste
a6e9317This commit introduces a **readability improvement** within the **`UnsignedLongs` utility class** in the **Guava primitives library**. It **refactors** the initialization of the internal `overflow` `BigInteger` constant, which represents 2^64. The change replaces a hexadecimal string literal `new BigInteger("10000000000000000", 16)` with the more semantically clear `BigInteger.ONE.shiftLeft(64)`. This internal **maintenance** update enhances code clarity by explicitly showing the constant's value, without altering any runtime behavior or external API.Jun 162maint
f780e2eThis commit **updates the Javadoc documentation** for the `checkedCast` method within the **`com.google.common.primitives.Ints`** utility class. The updated documentation clarifies that `Ints.checkedCast` is functionally equivalent to `Math.toIntExact`, with the primary difference being the type of exception thrown on overflow. This **maintenance** change improves developer understanding of the method's behavior and its relationship to standard library functions. It also notes that a **future deprecation** of `Ints.checkedCast` is being considered due to this overlap, though not yet implemented, affecting both the core Guava and Android versions of the `Ints` class.Jun 22maint
69cad18This commit **refactors** the `IntMath.mod` and `LongMath.mod` methods within the **`com.google.common.math` package** to internally use `Math.floorMod`, ensuring consistent "floor" modulo behavior. It also **enhances the documentation** for `IntMath.divide` and `LongMath.divide`, clarifying their behavior for `DOWN` and `FLOOR` rounding modes by providing equivalent standard operations. New tests have been added to `IntMathTest` and `LongMathTest` to verify these documented equivalences. This work improves the **robustness and clarity** of Guava's mathematical utilities, particularly concerning integer division and modulo operations.May 148maint
2aaa454This commit **updates the GitHub Actions versions** within the **Scorecard workflow** defined in `.github/workflows/scorecard.yml`. It specifically upgrades the `upload-artifact` and `codeql-action/upload-sarif` actions to their latest compatible versions. This is a **maintenance patch**, manually applying a Dependabot suggestion, to ensure the continuous integration pipeline remains secure and functional. The update prevents potential issues with outdated action versions, thereby keeping the project's security scanning infrastructure current and reliable.Mar 241maint
d0de930This commit **refactors** the **test suite** for the `CaseFormat` utility by converting its assertions to use the **Truth assertion library**. Specifically, the `CaseFormatTest.java` files in both the `android/guava-tests` and `guava-tests` modules have been updated. This **maintenance** effort improves the **readability and expressiveness** of the tests, making them easier to understand and maintain. The change has no impact on the runtime behavior or functionality of the `CaseFormat` utility itself, only on its **testing infrastructure**.Mar 142maint
3550b98Mar 9

This commit **updates the documentation** within the **`LongMath`** class by adding a crucial comment to the `lessThanBranchFree` method. The new comment explains the use of double negation (`~~`) to ensure **GWT compatibility** for this branch-free comparison. This **maintenance** task improves code clarity, helping developers understand the specific implementation detail and its rationale for cross-platform compilation.

2 filesmaint
07ad9feDec 3

This commit **fixes a potential hash collision issue** within the **Guava library's `CaseFormat` utility**. It **improves the `hashCode` implementation** for objects returned by the `CaseFormat.converterTo` method, which previously used an XOR-based calculation. The old approach could lead to identical hash codes for `A.converterTo(B)` and `B.converterTo(A)`, and zero for `A.converterTo(A)`. This **maintenance improvement** ensures better distribution and uniqueness of hash codes, preventing unexpected behavior or performance degradation when these converter objects are used in hash-based collections.

2 fileswaste
c91bd2aNov 7

This commit **refactors** the `toString()` implementations within the **`com.google.common.base.CharMatcher`** class, specifically for its `And` and `Or` nested types. Previously, these methods produced output that incorrectly suggested static method calls; they now accurately reflect their instance-based composition, consistent with `CharMatcher.negate()`. This **maintenance** change improves the clarity and consistency of debugging information without altering functional behavior. Corresponding **unit tests** in `CharMatcherTest.java` have been updated to assert the new `toString()` formats and utilize `Truth.assertThat`.

4 filesmaint
201c950Oct 2

This commit performs a **refactoring** within the **`com.google.common.net.MediaType`** class, affecting both the core Guava and Android Guava implementations. It renames a local variable from `builder` to `updatedParameters` inside the `withParameters` method to enhance **code clarity and readability**. This change is purely an internal code improvement, ensuring **no functional impact** or alteration of the public API for users of the `MediaType` class.

2 filesmaint
087f2c4Sep 11

This commit **fixes** several issues related to **exception handling** within the **`com.google.common.cache`** module, specifically for methods like `Cache.asMap().computeIfAbsent`. It refines the `LocalCache` implementation by **moving the evaluation of the compute function to occur before any potential entry creation**, ensuring that if an exception is thrown, no incomplete or erroneous cache entry is ever created. Additionally, the commit **removes the unnecessary storage of exceptions** within `ComputingValueReference`, as these stored exceptions were not utilized. This change provides more robust and predictable behavior for cache users when compute functions encounter errors.

2 fileswaste
148cea0Aug 27

This commit **fixes a potential `ArrayStoreException`** within the **Guava `Strings.lenientFormat` method**. Previously, `lenientFormat` could attempt to assign `String` values back into its varargs array argument, which is problematic if the array was explicitly passed and its component type was incompatible (e.g., `Object[]` of `Integer`s). The **bug fix** modifies `lenientFormat` to prevent this assignment, instead applying `lenientToString` directly when appending arguments. This ensures **more robust and predictable behavior** for all callers, especially when passing explicitly typed arrays, and is verified by new test cases.

4 fileswaste
a6e9317Jun 16

This commit introduces a **readability improvement** within the **`UnsignedLongs` utility class** in the **Guava primitives library**. It **refactors** the initialization of the internal `overflow` `BigInteger` constant, which represents 2^64. The change replaces a hexadecimal string literal `new BigInteger("10000000000000000", 16)` with the more semantically clear `BigInteger.ONE.shiftLeft(64)`. This internal **maintenance** update enhances code clarity by explicitly showing the constant's value, without altering any runtime behavior or external API.

2 filesmaint
f780e2eJun 2

This commit **updates the Javadoc documentation** for the `checkedCast` method within the **`com.google.common.primitives.Ints`** utility class. The updated documentation clarifies that `Ints.checkedCast` is functionally equivalent to `Math.toIntExact`, with the primary difference being the type of exception thrown on overflow. This **maintenance** change improves developer understanding of the method's behavior and its relationship to standard library functions. It also notes that a **future deprecation** of `Ints.checkedCast` is being considered due to this overlap, though not yet implemented, affecting both the core Guava and Android versions of the `Ints` class.

2 filesmaint
69cad18May 14

This commit **refactors** the `IntMath.mod` and `LongMath.mod` methods within the **`com.google.common.math` package** to internally use `Math.floorMod`, ensuring consistent "floor" modulo behavior. It also **enhances the documentation** for `IntMath.divide` and `LongMath.divide`, clarifying their behavior for `DOWN` and `FLOOR` rounding modes by providing equivalent standard operations. New tests have been added to `IntMathTest` and `LongMathTest` to verify these documented equivalences. This work improves the **robustness and clarity** of Guava's mathematical utilities, particularly concerning integer division and modulo operations.

8 filesmaint
2aaa454Mar 24

This commit **updates the GitHub Actions versions** within the **Scorecard workflow** defined in `.github/workflows/scorecard.yml`. It specifically upgrades the `upload-artifact` and `codeql-action/upload-sarif` actions to their latest compatible versions. This is a **maintenance patch**, manually applying a Dependabot suggestion, to ensure the continuous integration pipeline remains secure and functional. The update prevents potential issues with outdated action versions, thereby keeping the project's security scanning infrastructure current and reliable.

1 filesmaint
d0de930Mar 14

This commit **refactors** the **test suite** for the `CaseFormat` utility by converting its assertions to use the **Truth assertion library**. Specifically, the `CaseFormatTest.java` files in both the `android/guava-tests` and `guava-tests` modules have been updated. This **maintenance** effort improves the **readability and expressiveness** of the tests, making them easier to understand and maintain. The change has no impact on the runtime behavior or functionality of the `CaseFormat` utility itself, only on its **testing infrastructure**.

2 filesmaint

Work Patterns

Beta

Commit activity distribution by hour and day of week. Shows when this developer is most active.

Collaboration

Beta

Developers who frequently work on the same files and symbols. Higher score means stronger code collaboration.

NavigaraNavigara
OrganizationsDistributionCompareResearch