Overview
File Change Frequency Overall
  • There are 11 files with 481 lines of code.
    • 0 files changed more than 100 times (0 lines of code)
    • 0 files changed 51-100 times (0 lines of code)
    • 0 files changed 21-50 times (0 lines of code)
    • 1 file changed 6-20 times (131 lines of code)
    • 10 files changed 1-5 times (350 lines of code)
0% | 0% | 0% | 27% | 72%
Legend:
101+
51-100
21-50
6-20
1-5

explore: grouped by folders | grouped by update frequency | data
Contributors Count Frequency Overall
  • There are 11 files with 481 lines of code.
    • 0 files changed by more than 25 contributors (0 lines of code)
    • 0 files changed by 11-25 contributors (0 lines of code)
    • 0 files changed by 6-10 contributors (0 lines of code)
    • 10 files changed by 2-5 contributors (476 lines of code)
    • 1 file changed by 1 contributor (5 lines of code)
0% | 0% | 0% | 98% | 1%
Legend:
26+
11-25
6-10
2-5
1

explore: grouped by folders | grouped by contributors count | data
File Change Frequency per File Extension
scala, txt, json, ts, yaml, sbt, gitignore, md, js, mjs, properties, snap
File Change Frequency per Extension
The number of recorded file updates
101+
51-100
21-50
6-20
1-5
ts0% | 0% | 0% | 100% | 0%
scala0% | 0% | 0% | 0% | 100%
mjs0% | 0% | 0% | 0% | 100%
File Change Frequency per Logical Decomposition
primary
primary (file change frequency)
The number of recorded file updates
101+
51-100
21-50
6-20
1-5
cdk0% | 0% | 0% | 96% | 3%
src0% | 0% | 0% | 0% | 100%
Most Frequently Changed Files (Top 11)

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
131 1 2026-02-03 2026-03-02 10 2 +343 / -63 alex.dufournet 3389563+alexduf
Handler.scala
in src/main/scala/com/gu/alb
54 - 2026-02-03 2026-02-23 5 2 +171 / -35 alex.dufournet 3389563+alexduf
LocalRun.scala
in src/main/scala/com/gu/alb
31 - 2026-02-06 2026-02-25 4 2 +190 / -110 alex.dufournet 3389563+alexduf
LogAggregates.scala
in src/main/scala/com/gu/alb/models
13 - 2026-02-06 2026-02-23 3 2 +36 / -2 alex.dufournet 3389563+alexduf
RoutesFetcher.scala
in src/main/scala/com/gu/alb
29 1 2026-02-06 2026-02-23 3 2 +70 / -2 alex.dufournet 3389563+alexduf
5 - 2026-02-03 2026-02-10 2 1 +12 / -0 alex.dufournet alex.dufournet
AppIdentity.scala
in src/main/scala/com/gu/alb/models
6 - 2026-02-06 2026-02-23 2 2 +14 / -0 alex.dufournet 3389563+alexduf
Config.scala
in src/main/scala/com/gu/alb
34 - 2026-02-09 2026-02-23 2 2 +89 / -5 alex.dufournet 3389563+alexduf
CloudwatchClient.scala
in src/main/scala/com/gu/alb
47 1 2026-02-09 2026-02-23 2 2 +113 / -1 alex.dufournet 3389563+alexduf
AthenaClient.scala
in src/main/scala/com/gu/alb
64 - 2026-02-09 2026-02-23 2 2 +175 / -5 alex.dufournet 3389563+alexduf
LogService.scala
in src/main/scala/com/gu/alb
67 2 2026-02-09 2026-02-23 2 2 +167 / -7 alex.dufournet 3389563+alexduf
Files With Most Churn (Top 11)
Based on the number of lines added and deleted across all commits.

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
131 1 2026-02-03 2026-03-02 10 2 +343 / -63 alex.dufournet 3389563+alexduf
LocalRun.scala
in src/main/scala/com/gu/alb
31 - 2026-02-06 2026-02-25 4 2 +190 / -110 alex.dufournet 3389563+alexduf
Handler.scala
in src/main/scala/com/gu/alb
54 - 2026-02-03 2026-02-23 5 2 +171 / -35 alex.dufournet 3389563+alexduf
AthenaClient.scala
in src/main/scala/com/gu/alb
64 - 2026-02-09 2026-02-23 2 2 +175 / -5 alex.dufournet 3389563+alexduf
LogService.scala
in src/main/scala/com/gu/alb
67 2 2026-02-09 2026-02-23 2 2 +167 / -7 alex.dufournet 3389563+alexduf
CloudwatchClient.scala
in src/main/scala/com/gu/alb
47 1 2026-02-09 2026-02-23 2 2 +113 / -1 alex.dufournet 3389563+alexduf
Config.scala
in src/main/scala/com/gu/alb
34 - 2026-02-09 2026-02-23 2 2 +89 / -5 alex.dufournet 3389563+alexduf
RoutesFetcher.scala
in src/main/scala/com/gu/alb
29 1 2026-02-06 2026-02-23 3 2 +70 / -2 alex.dufournet 3389563+alexduf
LogAggregates.scala
in src/main/scala/com/gu/alb/models
13 - 2026-02-06 2026-02-23 3 2 +36 / -2 alex.dufournet 3389563+alexduf
AppIdentity.scala
in src/main/scala/com/gu/alb/models
6 - 2026-02-06 2026-02-23 2 2 +14 / -0 alex.dufournet 3389563+alexduf
5 - 2026-02-03 2026-02-10 2 1 +12 / -0 alex.dufournet alex.dufournet
Files With Most Contributors (Top 11)
Based on the number of unique email addresses found in commits.

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
131 1 2026-02-03 2026-03-02 10 2 +343 / -63 alex.dufournet 3389563+alexduf
Handler.scala
in src/main/scala/com/gu/alb
54 - 2026-02-03 2026-02-23 5 2 +171 / -35 alex.dufournet 3389563+alexduf
LocalRun.scala
in src/main/scala/com/gu/alb
31 - 2026-02-06 2026-02-25 4 2 +190 / -110 alex.dufournet 3389563+alexduf
RoutesFetcher.scala
in src/main/scala/com/gu/alb
29 1 2026-02-06 2026-02-23 3 2 +70 / -2 alex.dufournet 3389563+alexduf
LogAggregates.scala
in src/main/scala/com/gu/alb/models
13 - 2026-02-06 2026-02-23 3 2 +36 / -2 alex.dufournet 3389563+alexduf
AthenaClient.scala
in src/main/scala/com/gu/alb
64 - 2026-02-09 2026-02-23 2 2 +175 / -5 alex.dufournet 3389563+alexduf
Config.scala
in src/main/scala/com/gu/alb
34 - 2026-02-09 2026-02-23 2 2 +89 / -5 alex.dufournet 3389563+alexduf
AppIdentity.scala
in src/main/scala/com/gu/alb/models
6 - 2026-02-06 2026-02-23 2 2 +14 / -0 alex.dufournet 3389563+alexduf
CloudwatchClient.scala
in src/main/scala/com/gu/alb
47 1 2026-02-09 2026-02-23 2 2 +113 / -1 alex.dufournet 3389563+alexduf
LogService.scala
in src/main/scala/com/gu/alb
67 2 2026-02-09 2026-02-23 2 2 +167 / -7 alex.dufournet 3389563+alexduf
5 - 2026-02-03 2026-02-10 2 1 +12 / -0 alex.dufournet alex.dufournet
Files With Least Contributors (Top 11)
Based on the number of unique email addresses found in commits.

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
5 - 2026-02-03 2026-02-10 2 1 +12 / -0 alex.dufournet alex.dufournet
131 1 2026-02-03 2026-03-02 10 2 +343 / -63 alex.dufournet 3389563+alexduf
LogService.scala
in src/main/scala/com/gu/alb
67 2 2026-02-09 2026-02-23 2 2 +167 / -7 alex.dufournet 3389563+alexduf
AthenaClient.scala
in src/main/scala/com/gu/alb
64 - 2026-02-09 2026-02-23 2 2 +175 / -5 alex.dufournet 3389563+alexduf
Handler.scala
in src/main/scala/com/gu/alb
54 - 2026-02-03 2026-02-23 5 2 +171 / -35 alex.dufournet 3389563+alexduf
CloudwatchClient.scala
in src/main/scala/com/gu/alb
47 1 2026-02-09 2026-02-23 2 2 +113 / -1 alex.dufournet 3389563+alexduf
Config.scala
in src/main/scala/com/gu/alb
34 - 2026-02-09 2026-02-23 2 2 +89 / -5 alex.dufournet 3389563+alexduf
LocalRun.scala
in src/main/scala/com/gu/alb
31 - 2026-02-06 2026-02-25 4 2 +190 / -110 alex.dufournet 3389563+alexduf
RoutesFetcher.scala
in src/main/scala/com/gu/alb
29 1 2026-02-06 2026-02-23 3 2 +70 / -2 alex.dufournet 3389563+alexduf
LogAggregates.scala
in src/main/scala/com/gu/alb/models
13 - 2026-02-06 2026-02-23 3 2 +36 / -2 alex.dufournet 3389563+alexduf
AppIdentity.scala
in src/main/scala/com/gu/alb/models
6 - 2026-02-06 2026-02-23 2 2 +14 / -0 alex.dufournet 3389563+alexduf
Correlations

File Size vs. Number of Changes: 11 points

cdk/lib/play-access-logs-to-metrics.ts x: 131 lines of code y: 10 # changes src/main/scala/com/gu/alb/LocalRun.scala x: 31 lines of code y: 4 # changes src/main/scala/com/gu/alb/AthenaClient.scala x: 64 lines of code y: 2 # changes src/main/scala/com/gu/alb/CloudwatchClient.scala x: 47 lines of code y: 2 # changes src/main/scala/com/gu/alb/Config.scala x: 34 lines of code y: 2 # changes src/main/scala/com/gu/alb/Handler.scala x: 54 lines of code y: 5 # changes src/main/scala/com/gu/alb/LogService.scala x: 67 lines of code y: 2 # changes src/main/scala/com/gu/alb/RoutesFetcher.scala x: 29 lines of code y: 3 # changes src/main/scala/com/gu/alb/models/LogAggregates.scala x: 13 lines of code y: 3 # changes src/main/scala/com/gu/alb/models/AppIdentity.scala x: 6 lines of code y: 2 # changes cdk/eslint.config.mjs x: 5 lines of code y: 2 # changes
10.0
# changes
  min: 2.0
  average: 3.36
  25th percentile: 2.0
  median: 2.0
  75th percentile: 4.0
  max: 10.0
0 131.0
lines of code
min: 5.0 | average: 43.73 | 25th percentile: 13.0 | median: 34.0 | 75th percentile: 64.0 | max: 131.0

Number of Contributors vs. Number of Changes: 11 points

cdk/lib/play-access-logs-to-metrics.ts x: 2 # contributors y: 10 # changes src/main/scala/com/gu/alb/LocalRun.scala x: 2 # contributors y: 4 # changes src/main/scala/com/gu/alb/AthenaClient.scala x: 2 # contributors y: 2 # changes src/main/scala/com/gu/alb/Handler.scala x: 2 # contributors y: 5 # changes src/main/scala/com/gu/alb/RoutesFetcher.scala x: 2 # contributors y: 3 # changes cdk/eslint.config.mjs x: 1 # contributors y: 2 # changes
10.0
# changes
  min: 2.0
  average: 3.36
  25th percentile: 2.0
  median: 2.0
  75th percentile: 4.0
  max: 10.0
0 2.0
# contributors
min: 1.0 | average: 1.91 | 25th percentile: 2.0 | median: 2.0 | 75th percentile: 2.0 | max: 2.0

Number of Contributors vs. File Size: 11 points

cdk/lib/play-access-logs-to-metrics.ts x: 2 # contributors y: 131 lines of code src/main/scala/com/gu/alb/LocalRun.scala x: 2 # contributors y: 31 lines of code src/main/scala/com/gu/alb/AthenaClient.scala x: 2 # contributors y: 64 lines of code src/main/scala/com/gu/alb/CloudwatchClient.scala x: 2 # contributors y: 47 lines of code src/main/scala/com/gu/alb/Config.scala x: 2 # contributors y: 34 lines of code src/main/scala/com/gu/alb/Handler.scala x: 2 # contributors y: 54 lines of code src/main/scala/com/gu/alb/LogService.scala x: 2 # contributors y: 67 lines of code src/main/scala/com/gu/alb/RoutesFetcher.scala x: 2 # contributors y: 29 lines of code src/main/scala/com/gu/alb/models/LogAggregates.scala x: 2 # contributors y: 13 lines of code src/main/scala/com/gu/alb/models/AppIdentity.scala x: 2 # contributors y: 6 lines of code cdk/eslint.config.mjs x: 1 # contributors y: 5 lines of code
131.0
lines of code
  min: 5.0
  average: 43.73
  25th percentile: 13.0
  median: 34.0
  75th percentile: 64.0
  max: 131.0
0 2.0
# contributors
min: 1.0 | average: 1.91 | 25th percentile: 2.0 | median: 2.0 | 75th percentile: 2.0 | max: 2.0

Number of Changes vs. Line Churn: 39 points

build.sbt x: 9 # changes y: 108 line churn .github/workflows/sbt-dependency-graph.yaml x: 2 # changes y: 66 line churn cdk/lib/play-access-logs-to-metrics.ts x: 10 # changes y: 406 line churn src/main/scala/com/gu/alb/LocalRun.scala x: 4 # changes y: 300 line churn .scalafmt.conf x: 3 # changes y: 10 line churn .tool-versions x: 4 # changes y: 8 line churn README.md x: 5 # changes y: 128 line churn cdk/lib/__snapshots__/play-access-logs-to-metrics.test.ts.snap x: 7 # changes y: 1106 line churn src/main/scala/com/gu/alb/AthenaClient.scala x: 2 # changes y: 180 line churn src/main/scala/com/gu/alb/CloudwatchClient.scala x: 2 # changes y: 114 line churn src/main/scala/com/gu/alb/Handler.scala x: 5 # changes y: 206 line churn src/main/scala/com/gu/alb/RoutesFetcher.scala x: 3 # changes y: 72 line churn src/main/scala/com/gu/alb/athena/AthenaClient.scala x: 3 # changes y: 352 line churn src/test/scala/com/gu/alb/LogServiceSuite.scala x: 2 # changes y: 442 line churn src/test/scala/com/gu/alb/logs/LogServiceSuite.scala x: 2 # changes y: 832 line churn src/main/scala/com/gu/alb/config/Config.scala x: 1 # changes y: 78 line churn .github/workflows/build.yaml x: 4 # changes y: 104 line churn src/main/scala/com/gu/alb/models/AppIdentity.scala x: 2 # changes y: 14 line churn cdk/yarn.lock x: 2 # changes y: 12368 line churn
12368.0
line churn
  min: 2.0
  average: 463.95
  25th percentile: 14.0
  median: 72.0
  75th percentile: 182.0
  max: 12368.0
0 10.0
# changes
min: 1.0 | average: 3.0 | 25th percentile: 2.0 | median: 2.0 | 75th percentile: 3.0 | max: 10.0

Number of Contributors vs. Line Churn: 11 points

cdk/lib/play-access-logs-to-metrics.ts x: 2 # contributors y: 406 line churn src/main/scala/com/gu/alb/LocalRun.scala x: 2 # contributors y: 300 line churn src/main/scala/com/gu/alb/AthenaClient.scala x: 2 # contributors y: 180 line churn src/main/scala/com/gu/alb/CloudwatchClient.scala x: 2 # contributors y: 114 line churn src/main/scala/com/gu/alb/Config.scala x: 2 # contributors y: 94 line churn src/main/scala/com/gu/alb/Handler.scala x: 2 # contributors y: 206 line churn src/main/scala/com/gu/alb/LogService.scala x: 2 # contributors y: 174 line churn src/main/scala/com/gu/alb/RoutesFetcher.scala x: 2 # contributors y: 72 line churn src/main/scala/com/gu/alb/models/LogAggregates.scala x: 2 # contributors y: 38 line churn src/main/scala/com/gu/alb/models/AppIdentity.scala x: 2 # contributors y: 14 line churn cdk/eslint.config.mjs x: 1 # contributors y: 12 line churn
406.0
line churn
  min: 12.0
  average: 146.36
  25th percentile: 38.0
  median: 114.0
  75th percentile: 206.0
  max: 406.0
0 2.0
# contributors
min: 1.0 | average: 1.91 | 25th percentile: 2.0 | median: 2.0 | 75th percentile: 2.0 | max: 2.0

File Size vs. Line Churn: 11 points

cdk/lib/play-access-logs-to-metrics.ts x: 131 lines of code y: 406 line churn src/main/scala/com/gu/alb/LocalRun.scala x: 31 lines of code y: 300 line churn src/main/scala/com/gu/alb/AthenaClient.scala x: 64 lines of code y: 180 line churn src/main/scala/com/gu/alb/CloudwatchClient.scala x: 47 lines of code y: 114 line churn src/main/scala/com/gu/alb/Config.scala x: 34 lines of code y: 94 line churn src/main/scala/com/gu/alb/Handler.scala x: 54 lines of code y: 206 line churn src/main/scala/com/gu/alb/LogService.scala x: 67 lines of code y: 174 line churn src/main/scala/com/gu/alb/RoutesFetcher.scala x: 29 lines of code y: 72 line churn src/main/scala/com/gu/alb/models/LogAggregates.scala x: 13 lines of code y: 38 line churn src/main/scala/com/gu/alb/models/AppIdentity.scala x: 6 lines of code y: 14 line churn cdk/eslint.config.mjs x: 5 lines of code y: 12 line churn
406.0
line churn
  min: 12.0
  average: 146.36
  25th percentile: 38.0
  median: 114.0
  75th percentile: 206.0
  max: 406.0
0 131.0
lines of code
min: 5.0 | average: 43.73 | 25th percentile: 13.0 | median: 34.0 | 75th percentile: 64.0 | max: 131.0