Overview
File Change Frequency Overall
  • There are 15 files with 425 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)
    • 0 files changed 6-20 times (0 lines of code)
    • 15 files changed 1-5 times (425 lines of code)
0% | 0% | 0% | 0% | 100%
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 15 files with 425 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)
    • 0 files changed by 2-5 contributors (0 lines of code)
    • 15 files changed by 1 contributor (425 lines of code)
0% | 0% | 0% | 0% | 100%
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, sbt, gitignore, md, yml, properties
File Change Frequency per Extension
The number of recorded file updates
101+
51-100
21-50
6-20
1-5
scala0% | 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
src0% | 0% | 0% | 0% | 100%
Most Frequently Changed Files (Top 15)

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
IOCapiClient.scala
in src/main/scala/com/gu/words/capi
46 3 2025-10-31 2025-11-13 3 1 +84 / -26 roberto.tyley roberto.tyley
MonthReport.scala
in src/main/scala/com/gu/words/reports
58 3 2025-10-31 2025-11-13 3 1 +100 / -21 roberto.tyley roberto.tyley
CsvCodecs.scala
in src/main/scala/com/gu/words/reports
9 - 2025-10-31 2025-11-05 2 1 +13 / -1 roberto.tyley roberto.tyley
TokenBucket.scala
in src/main/scala/com/gu/words/capi
28 1 2025-10-31 2025-11-05 2 1 +35 / -1 roberto.tyley roberto.tyley
Main.scala
in src/main/scala/com/gu/words
37 2 2025-10-31 2025-11-05 2 1 +45 / -1 roberto.tyley roberto.tyley
ExtractorService.scala
in src/main/scala/com/gu/words
68 6 2025-10-31 2025-11-05 2 1 +146 / -62 roberto.tyley roberto.tyley
FrequencyMap.scala
in src/main/scala/com/gu/words/model
6 1 2025-10-31 2025-10-31 1 1 +8 / -0 roberto.tyley roberto.tyley
CapiId.scala
in src/main/scala/com/gu/words/capi
6 - 2025-10-31 2025-10-31 1 1 +7 / -0 roberto.tyley roberto.tyley
Store.scala
in src/main/scala/com/gu/words/store
8 - 2025-11-05 2025-11-05 1 1 +12 / -0 roberto.tyley roberto.tyley
ContentService.scala
in src/main/scala/com/gu/words/capi
15 1 2025-10-31 2025-10-31 1 1 +24 / -0 roberto.tyley roberto.tyley
YearMonth.scala
in src/main/scala/com/gu/words/model
19 1 2025-10-31 2025-10-31 1 1 +28 / -0 roberto.tyley roberto.tyley
FileStore.scala
in src/main/scala/com/gu/words/store
26 2 2025-11-05 2025-11-05 1 1 +31 / -0 roberto.tyley roberto.tyley
DayReport.scala
in src/main/scala/com/gu/words/reports
26 1 2025-10-31 2025-10-31 1 1 +33 / -0 roberto.tyley roberto.tyley
ContentSummary.scala
in src/main/scala/com/gu/words/model
32 3 2025-10-31 2025-10-31 1 1 +41 / -0 roberto.tyley roberto.tyley
WordUsage.scala
in src/main/scala/com/gu/words/reports
41 2 2025-11-05 2025-11-05 1 1 +52 / -0 roberto.tyley roberto.tyley
Files With Most Churn (Top 15)
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
ExtractorService.scala
in src/main/scala/com/gu/words
68 6 2025-10-31 2025-11-05 2 1 +146 / -62 roberto.tyley roberto.tyley
MonthReport.scala
in src/main/scala/com/gu/words/reports
58 3 2025-10-31 2025-11-13 3 1 +100 / -21 roberto.tyley roberto.tyley
IOCapiClient.scala
in src/main/scala/com/gu/words/capi
46 3 2025-10-31 2025-11-13 3 1 +84 / -26 roberto.tyley roberto.tyley
WordUsage.scala
in src/main/scala/com/gu/words/reports
41 2 2025-11-05 2025-11-05 1 1 +52 / -0 roberto.tyley roberto.tyley
Main.scala
in src/main/scala/com/gu/words
37 2 2025-10-31 2025-11-05 2 1 +45 / -1 roberto.tyley roberto.tyley
ContentSummary.scala
in src/main/scala/com/gu/words/model
32 3 2025-10-31 2025-10-31 1 1 +41 / -0 roberto.tyley roberto.tyley
TokenBucket.scala
in src/main/scala/com/gu/words/capi
28 1 2025-10-31 2025-11-05 2 1 +35 / -1 roberto.tyley roberto.tyley
DayReport.scala
in src/main/scala/com/gu/words/reports
26 1 2025-10-31 2025-10-31 1 1 +33 / -0 roberto.tyley roberto.tyley
FileStore.scala
in src/main/scala/com/gu/words/store
26 2 2025-11-05 2025-11-05 1 1 +31 / -0 roberto.tyley roberto.tyley
YearMonth.scala
in src/main/scala/com/gu/words/model
19 1 2025-10-31 2025-10-31 1 1 +28 / -0 roberto.tyley roberto.tyley
ContentService.scala
in src/main/scala/com/gu/words/capi
15 1 2025-10-31 2025-10-31 1 1 +24 / -0 roberto.tyley roberto.tyley
CsvCodecs.scala
in src/main/scala/com/gu/words/reports
9 - 2025-10-31 2025-11-05 2 1 +13 / -1 roberto.tyley roberto.tyley
Store.scala
in src/main/scala/com/gu/words/store
8 - 2025-11-05 2025-11-05 1 1 +12 / -0 roberto.tyley roberto.tyley
FrequencyMap.scala
in src/main/scala/com/gu/words/model
6 1 2025-10-31 2025-10-31 1 1 +8 / -0 roberto.tyley roberto.tyley
CapiId.scala
in src/main/scala/com/gu/words/capi
6 - 2025-10-31 2025-10-31 1 1 +7 / -0 roberto.tyley roberto.tyley
Files With Most Contributors (Top 15)
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
IOCapiClient.scala
in src/main/scala/com/gu/words/capi
46 3 2025-10-31 2025-11-13 3 1 +84 / -26 roberto.tyley roberto.tyley
MonthReport.scala
in src/main/scala/com/gu/words/reports
58 3 2025-10-31 2025-11-13 3 1 +100 / -21 roberto.tyley roberto.tyley
ExtractorService.scala
in src/main/scala/com/gu/words
68 6 2025-10-31 2025-11-05 2 1 +146 / -62 roberto.tyley roberto.tyley
TokenBucket.scala
in src/main/scala/com/gu/words/capi
28 1 2025-10-31 2025-11-05 2 1 +35 / -1 roberto.tyley roberto.tyley
Main.scala
in src/main/scala/com/gu/words
37 2 2025-10-31 2025-11-05 2 1 +45 / -1 roberto.tyley roberto.tyley
CsvCodecs.scala
in src/main/scala/com/gu/words/reports
9 - 2025-10-31 2025-11-05 2 1 +13 / -1 roberto.tyley roberto.tyley
ContentService.scala
in src/main/scala/com/gu/words/capi
15 1 2025-10-31 2025-10-31 1 1 +24 / -0 roberto.tyley roberto.tyley
CapiId.scala
in src/main/scala/com/gu/words/capi
6 - 2025-10-31 2025-10-31 1 1 +7 / -0 roberto.tyley roberto.tyley
FrequencyMap.scala
in src/main/scala/com/gu/words/model
6 1 2025-10-31 2025-10-31 1 1 +8 / -0 roberto.tyley roberto.tyley
YearMonth.scala
in src/main/scala/com/gu/words/model
19 1 2025-10-31 2025-10-31 1 1 +28 / -0 roberto.tyley roberto.tyley
ContentSummary.scala
in src/main/scala/com/gu/words/model
32 3 2025-10-31 2025-10-31 1 1 +41 / -0 roberto.tyley roberto.tyley
DayReport.scala
in src/main/scala/com/gu/words/reports
26 1 2025-10-31 2025-10-31 1 1 +33 / -0 roberto.tyley roberto.tyley
WordUsage.scala
in src/main/scala/com/gu/words/reports
41 2 2025-11-05 2025-11-05 1 1 +52 / -0 roberto.tyley roberto.tyley
FileStore.scala
in src/main/scala/com/gu/words/store
26 2 2025-11-05 2025-11-05 1 1 +31 / -0 roberto.tyley roberto.tyley
Store.scala
in src/main/scala/com/gu/words/store
8 - 2025-11-05 2025-11-05 1 1 +12 / -0 roberto.tyley roberto.tyley
Files With Least Contributors (Top 15)
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
ExtractorService.scala
in src/main/scala/com/gu/words
68 6 2025-10-31 2025-11-05 2 1 +146 / -62 roberto.tyley roberto.tyley
MonthReport.scala
in src/main/scala/com/gu/words/reports
58 3 2025-10-31 2025-11-13 3 1 +100 / -21 roberto.tyley roberto.tyley
IOCapiClient.scala
in src/main/scala/com/gu/words/capi
46 3 2025-10-31 2025-11-13 3 1 +84 / -26 roberto.tyley roberto.tyley
WordUsage.scala
in src/main/scala/com/gu/words/reports
41 2 2025-11-05 2025-11-05 1 1 +52 / -0 roberto.tyley roberto.tyley
Main.scala
in src/main/scala/com/gu/words
37 2 2025-10-31 2025-11-05 2 1 +45 / -1 roberto.tyley roberto.tyley
ContentSummary.scala
in src/main/scala/com/gu/words/model
32 3 2025-10-31 2025-10-31 1 1 +41 / -0 roberto.tyley roberto.tyley
TokenBucket.scala
in src/main/scala/com/gu/words/capi
28 1 2025-10-31 2025-11-05 2 1 +35 / -1 roberto.tyley roberto.tyley
DayReport.scala
in src/main/scala/com/gu/words/reports
26 1 2025-10-31 2025-10-31 1 1 +33 / -0 roberto.tyley roberto.tyley
FileStore.scala
in src/main/scala/com/gu/words/store
26 2 2025-11-05 2025-11-05 1 1 +31 / -0 roberto.tyley roberto.tyley
YearMonth.scala
in src/main/scala/com/gu/words/model
19 1 2025-10-31 2025-10-31 1 1 +28 / -0 roberto.tyley roberto.tyley
ContentService.scala
in src/main/scala/com/gu/words/capi
15 1 2025-10-31 2025-10-31 1 1 +24 / -0 roberto.tyley roberto.tyley
CsvCodecs.scala
in src/main/scala/com/gu/words/reports
9 - 2025-10-31 2025-11-05 2 1 +13 / -1 roberto.tyley roberto.tyley
Store.scala
in src/main/scala/com/gu/words/store
8 - 2025-11-05 2025-11-05 1 1 +12 / -0 roberto.tyley roberto.tyley
CapiId.scala
in src/main/scala/com/gu/words/capi
6 - 2025-10-31 2025-10-31 1 1 +7 / -0 roberto.tyley roberto.tyley
FrequencyMap.scala
in src/main/scala/com/gu/words/model
6 1 2025-10-31 2025-10-31 1 1 +8 / -0 roberto.tyley roberto.tyley
Correlations

File Size vs. Number of Changes: 15 points

src/main/scala/com/gu/words/capi/IOCapiClient.scala x: 46 lines of code y: 3 # changes src/main/scala/com/gu/words/reports/MonthReport.scala x: 58 lines of code y: 3 # changes src/main/scala/com/gu/words/ExtractorService.scala x: 68 lines of code y: 2 # changes src/main/scala/com/gu/words/Main.scala x: 37 lines of code y: 2 # changes src/main/scala/com/gu/words/capi/TokenBucket.scala x: 28 lines of code y: 2 # changes src/main/scala/com/gu/words/store/FileStore.scala x: 26 lines of code y: 1 # changes src/main/scala/com/gu/words/store/Store.scala x: 8 lines of code y: 1 # changes src/main/scala/com/gu/words/reports/CsvCodecs.scala x: 9 lines of code y: 2 # changes src/main/scala/com/gu/words/reports/WordUsage.scala x: 41 lines of code y: 1 # changes src/main/scala/com/gu/words/capi/CapiId.scala x: 6 lines of code y: 1 # changes src/main/scala/com/gu/words/capi/ContentService.scala x: 15 lines of code y: 1 # changes src/main/scala/com/gu/words/model/ContentSummary.scala x: 32 lines of code y: 1 # changes src/main/scala/com/gu/words/model/YearMonth.scala x: 19 lines of code y: 1 # changes
3.0
# changes
  min: 1.0
  average: 1.53
  25th percentile: 1.0
  median: 1.0
  75th percentile: 2.0
  max: 3.0
0 68.0
lines of code
min: 6.0 | average: 28.33 | 25th percentile: 9.0 | median: 26.0 | 75th percentile: 41.0 | max: 68.0

Number of Contributors vs. Number of Changes: 15 points

src/main/scala/com/gu/words/capi/IOCapiClient.scala x: 1 # contributors y: 3 # changes src/main/scala/com/gu/words/ExtractorService.scala x: 1 # contributors y: 2 # changes src/main/scala/com/gu/words/store/FileStore.scala x: 1 # contributors y: 1 # changes
3.0
# changes
  min: 1.0
  average: 1.53
  25th percentile: 1.0
  median: 1.0
  75th percentile: 2.0
  max: 3.0
0 1.0
# contributors
min: 1.0 | average: 1.0 | 25th percentile: 1.0 | median: 1.0 | 75th percentile: 1.0 | max: 1.0

Number of Contributors vs. File Size: 15 points

src/main/scala/com/gu/words/capi/IOCapiClient.scala x: 1 # contributors y: 46 lines of code src/main/scala/com/gu/words/reports/MonthReport.scala x: 1 # contributors y: 58 lines of code src/main/scala/com/gu/words/ExtractorService.scala x: 1 # contributors y: 68 lines of code src/main/scala/com/gu/words/Main.scala x: 1 # contributors y: 37 lines of code src/main/scala/com/gu/words/capi/TokenBucket.scala x: 1 # contributors y: 28 lines of code src/main/scala/com/gu/words/store/FileStore.scala x: 1 # contributors y: 26 lines of code src/main/scala/com/gu/words/store/Store.scala x: 1 # contributors y: 8 lines of code src/main/scala/com/gu/words/reports/CsvCodecs.scala x: 1 # contributors y: 9 lines of code src/main/scala/com/gu/words/reports/WordUsage.scala x: 1 # contributors y: 41 lines of code src/main/scala/com/gu/words/capi/CapiId.scala x: 1 # contributors y: 6 lines of code src/main/scala/com/gu/words/capi/ContentService.scala x: 1 # contributors y: 15 lines of code src/main/scala/com/gu/words/model/ContentSummary.scala x: 1 # contributors y: 32 lines of code src/main/scala/com/gu/words/model/YearMonth.scala x: 1 # contributors y: 19 lines of code
68.0
lines of code
  min: 6.0
  average: 28.33
  25th percentile: 9.0
  median: 26.0
  75th percentile: 41.0
  max: 68.0
0 1.0
# contributors
min: 1.0 | average: 1.0 | 25th percentile: 1.0 | median: 1.0 | 75th percentile: 1.0 | max: 1.0

Number of Changes vs. Line Churn: 23 points

src/main/scala/com/gu/words/capi/IOCapiClient.scala x: 3 # changes y: 110 line churn src/main/scala/com/gu/words/reports/MonthReport.scala x: 3 # changes y: 121 line churn src/test/scala/com/gu/words/reports/MonthReportTest.scala x: 2 # changes y: 33 line churn src/main/scala/com/gu/words/ExtractorService.scala x: 2 # changes y: 208 line churn src/main/scala/com/gu/words/Main.scala x: 2 # changes y: 46 line churn src/main/scala/com/gu/words/capi/TokenBucket.scala x: 2 # changes y: 36 line churn src/main/scala/com/gu/words/store/FileStore.scala x: 1 # changes y: 31 line churn src/main/scala/com/gu/words/store/Store.scala x: 1 # changes y: 12 line churn src/main/scala/com/gu/words/reports/CsvCodecs.scala x: 2 # changes y: 14 line churn src/main/scala/com/gu/words/reports/WordReport.scala x: 2 # changes y: 76 line churn src/main/scala/com/gu/words/reports/WordUsage.scala x: 1 # changes y: 52 line churn .github/workflows/ci.yml x: 1 # changes y: 25 line churn .gitignore x: 1 # changes y: 19 line churn .tool-versions x: 1 # changes y: 1 line churn README.md x: 1 # changes y: 9 line churn src/main/scala/com/gu/words/capi/CapiId.scala x: 1 # changes y: 7 line churn src/main/scala/com/gu/words/capi/ContentService.scala x: 1 # changes y: 24 line churn src/main/scala/com/gu/words/model/ContentSummary.scala x: 1 # changes y: 41 line churn src/main/scala/com/gu/words/model/FrequencyMap.scala x: 1 # changes y: 8 line churn src/main/scala/com/gu/words/model/YearMonth.scala x: 1 # changes y: 28 line churn src/main/scala/com/gu/words/reports/DayReport.scala x: 1 # changes y: 33 line churn
208.0
line churn
  min: 1.0
  average: 41.48
  25th percentile: 12.0
  median: 28.0
  75th percentile: 46.0
  max: 208.0
0 3.0
# changes
min: 1.0 | average: 1.43 | 25th percentile: 1.0 | median: 1.0 | 75th percentile: 2.0 | max: 3.0

Number of Contributors vs. Line Churn: 15 points

src/main/scala/com/gu/words/capi/IOCapiClient.scala x: 1 # contributors y: 110 line churn src/main/scala/com/gu/words/reports/MonthReport.scala x: 1 # contributors y: 121 line churn src/main/scala/com/gu/words/ExtractorService.scala x: 1 # contributors y: 208 line churn src/main/scala/com/gu/words/Main.scala x: 1 # contributors y: 46 line churn src/main/scala/com/gu/words/capi/TokenBucket.scala x: 1 # contributors y: 36 line churn src/main/scala/com/gu/words/store/FileStore.scala x: 1 # contributors y: 31 line churn src/main/scala/com/gu/words/store/Store.scala x: 1 # contributors y: 12 line churn src/main/scala/com/gu/words/reports/CsvCodecs.scala x: 1 # contributors y: 14 line churn src/main/scala/com/gu/words/reports/WordUsage.scala x: 1 # contributors y: 52 line churn src/main/scala/com/gu/words/capi/CapiId.scala x: 1 # contributors y: 7 line churn src/main/scala/com/gu/words/capi/ContentService.scala x: 1 # contributors y: 24 line churn src/main/scala/com/gu/words/model/ContentSummary.scala x: 1 # contributors y: 41 line churn src/main/scala/com/gu/words/model/FrequencyMap.scala x: 1 # contributors y: 8 line churn src/main/scala/com/gu/words/model/YearMonth.scala x: 1 # contributors y: 28 line churn src/main/scala/com/gu/words/reports/DayReport.scala x: 1 # contributors y: 33 line churn
208.0
line churn
  min: 7.0
  average: 51.4
  25th percentile: 14.0
  median: 33.0
  75th percentile: 52.0
  max: 208.0
0 1.0
# contributors
min: 1.0 | average: 1.0 | 25th percentile: 1.0 | median: 1.0 | 75th percentile: 1.0 | max: 1.0

File Size vs. Line Churn: 15 points

src/main/scala/com/gu/words/capi/IOCapiClient.scala x: 46 lines of code y: 110 line churn src/main/scala/com/gu/words/reports/MonthReport.scala x: 58 lines of code y: 121 line churn src/main/scala/com/gu/words/ExtractorService.scala x: 68 lines of code y: 208 line churn src/main/scala/com/gu/words/Main.scala x: 37 lines of code y: 46 line churn src/main/scala/com/gu/words/capi/TokenBucket.scala x: 28 lines of code y: 36 line churn src/main/scala/com/gu/words/store/FileStore.scala x: 26 lines of code y: 31 line churn src/main/scala/com/gu/words/store/Store.scala x: 8 lines of code y: 12 line churn src/main/scala/com/gu/words/reports/CsvCodecs.scala x: 9 lines of code y: 14 line churn src/main/scala/com/gu/words/reports/WordUsage.scala x: 41 lines of code y: 52 line churn src/main/scala/com/gu/words/capi/CapiId.scala x: 6 lines of code y: 7 line churn src/main/scala/com/gu/words/capi/ContentService.scala x: 15 lines of code y: 24 line churn src/main/scala/com/gu/words/model/ContentSummary.scala x: 32 lines of code y: 41 line churn src/main/scala/com/gu/words/model/FrequencyMap.scala x: 6 lines of code y: 8 line churn src/main/scala/com/gu/words/model/YearMonth.scala x: 19 lines of code y: 28 line churn src/main/scala/com/gu/words/reports/DayReport.scala x: 26 lines of code y: 33 line churn
208.0
line churn
  min: 7.0
  average: 51.4
  25th percentile: 14.0
  median: 33.0
  75th percentile: 52.0
  max: 208.0
0 68.0
lines of code
min: 6.0 | average: 28.33 | 25th percentile: 9.0 | median: 26.0 | 75th percentile: 41.0 | max: 68.0