Overview
File Change Frequency Overall
  • There are 6 files with 276 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)
    • 3 files changed 6-20 times (180 lines of code)
    • 3 files changed 1-5 times (96 lines of code)
0% | 0% | 0% | 65% | 34%
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 6 files with 276 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)
    • 1 file changed by 6-10 contributors (28 lines of code)
    • 4 files changed by 2-5 contributors (245 lines of code)
    • 1 file changed by 1 contributor (3 lines of code)
0% | 0% | 10% | 88% | 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, sbt, yaml, 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% | 65% | 34%
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
client-play-json-v280% | 0% | 0% | 61% | 38%
project0% | 0% | 0% | 100% | 0%
Most Frequently Changed Files (Top 6)

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
28 - 2016-08-19 2026-01-09 17 10 +130 / -50 sam.cutler jonathon.herbert
ANComponent.scala
in client-play-json-v28/src/main/scala/com/gu/targeting/client
79 - 2026-05-13 2026-06-16 9 5 +272 / -78 emma-jo.imber 108270776+emma-imber
Fields.scala
in client-play-json-v28/src/main/scala/com/gu/targeting/client
73 2 2023-12-15 2026-01-29 7 2 +202 / -8 ioannakok philip.mcmahon
Rule.scala
in client-play-json-v28/src/main/scala/com/gu/targeting/client
14 1 2023-12-15 2026-06-04 4 3 +42 / -4 ioannakok emily
Campaign.scala
in client-play-json-v28/src/main/scala/com/gu/targeting/client
79 6 2023-12-15 2026-01-07 4 2 +214 / -0 ioannakok philip.mcmahon
Exceptions.scala
in client-play-json-v28/src/main/scala/com/gu/targeting/client
3 - 2023-12-15 2023-12-21 2 1 +14 / -0 ioannakok ioannakok
Files With Most Churn (Top 6)
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
ANComponent.scala
in client-play-json-v28/src/main/scala/com/gu/targeting/client
79 - 2026-05-13 2026-06-16 9 5 +272 / -78 emma-jo.imber 108270776+emma-imber
Campaign.scala
in client-play-json-v28/src/main/scala/com/gu/targeting/client
79 6 2023-12-15 2026-01-07 4 2 +214 / -0 ioannakok philip.mcmahon
Fields.scala
in client-play-json-v28/src/main/scala/com/gu/targeting/client
73 2 2023-12-15 2026-01-29 7 2 +202 / -8 ioannakok philip.mcmahon
28 - 2016-08-19 2026-01-09 17 10 +130 / -50 sam.cutler jonathon.herbert
Rule.scala
in client-play-json-v28/src/main/scala/com/gu/targeting/client
14 1 2023-12-15 2026-06-04 4 3 +42 / -4 ioannakok emily
Exceptions.scala
in client-play-json-v28/src/main/scala/com/gu/targeting/client
3 - 2023-12-15 2023-12-21 2 1 +14 / -0 ioannakok ioannakok
Files With Most Contributors (Top 6)
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
28 - 2016-08-19 2026-01-09 17 10 +130 / -50 sam.cutler jonathon.herbert
ANComponent.scala
in client-play-json-v28/src/main/scala/com/gu/targeting/client
79 - 2026-05-13 2026-06-16 9 5 +272 / -78 emma-jo.imber 108270776+emma-imber
Rule.scala
in client-play-json-v28/src/main/scala/com/gu/targeting/client
14 1 2023-12-15 2026-06-04 4 3 +42 / -4 ioannakok emily
Fields.scala
in client-play-json-v28/src/main/scala/com/gu/targeting/client
73 2 2023-12-15 2026-01-29 7 2 +202 / -8 ioannakok philip.mcmahon
Campaign.scala
in client-play-json-v28/src/main/scala/com/gu/targeting/client
79 6 2023-12-15 2026-01-07 4 2 +214 / -0 ioannakok philip.mcmahon
Exceptions.scala
in client-play-json-v28/src/main/scala/com/gu/targeting/client
3 - 2023-12-15 2023-12-21 2 1 +14 / -0 ioannakok ioannakok
Files With Least Contributors (Top 6)
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
Exceptions.scala
in client-play-json-v28/src/main/scala/com/gu/targeting/client
3 - 2023-12-15 2023-12-21 2 1 +14 / -0 ioannakok ioannakok
Campaign.scala
in client-play-json-v28/src/main/scala/com/gu/targeting/client
79 6 2023-12-15 2026-01-07 4 2 +214 / -0 ioannakok philip.mcmahon
Fields.scala
in client-play-json-v28/src/main/scala/com/gu/targeting/client
73 2 2023-12-15 2026-01-29 7 2 +202 / -8 ioannakok philip.mcmahon
Rule.scala
in client-play-json-v28/src/main/scala/com/gu/targeting/client
14 1 2023-12-15 2026-06-04 4 3 +42 / -4 ioannakok emily
ANComponent.scala
in client-play-json-v28/src/main/scala/com/gu/targeting/client
79 - 2026-05-13 2026-06-16 9 5 +272 / -78 emma-jo.imber 108270776+emma-imber
28 - 2016-08-19 2026-01-09 17 10 +130 / -50 sam.cutler jonathon.herbert
Correlations

File Size vs. Number of Changes: 6 points

client-play-json-v28/src/main/scala/com/gu/targeting/client/ANComponent.scala x: 79 lines of code y: 9 # changes client-play-json-v28/src/main/scala/com/gu/targeting/client/Rule.scala x: 14 lines of code y: 4 # changes client-play-json-v28/src/main/scala/com/gu/targeting/client/Fields.scala x: 73 lines of code y: 7 # changes project/dependencies.scala x: 28 lines of code y: 17 # changes client-play-json-v28/src/main/scala/com/gu/targeting/client/Campaign.scala x: 79 lines of code y: 4 # changes client-play-json-v28/src/main/scala/com/gu/targeting/client/Exceptions.scala x: 3 lines of code y: 2 # changes
17.0
# changes
  min: 2.0
  average: 7.17
  25th percentile: 3.5
  median: 5.5
  75th percentile: 11.0
  max: 17.0
0 79.0
lines of code
min: 3.0 | average: 46.0 | 25th percentile: 11.25 | median: 50.5 | 75th percentile: 79.0 | max: 79.0

Number of Contributors vs. Number of Changes: 6 points

client-play-json-v28/src/main/scala/com/gu/targeting/client/ANComponent.scala x: 5 # contributors y: 9 # changes client-play-json-v28/src/main/scala/com/gu/targeting/client/Rule.scala x: 3 # contributors y: 4 # changes client-play-json-v28/src/main/scala/com/gu/targeting/client/Fields.scala x: 2 # contributors y: 7 # changes project/dependencies.scala x: 10 # contributors y: 17 # changes client-play-json-v28/src/main/scala/com/gu/targeting/client/Campaign.scala x: 2 # contributors y: 4 # changes client-play-json-v28/src/main/scala/com/gu/targeting/client/Exceptions.scala x: 1 # contributors y: 2 # changes
17.0
# changes
  min: 2.0
  average: 7.17
  25th percentile: 3.5
  median: 5.5
  75th percentile: 11.0
  max: 17.0
0 10.0
# contributors
min: 1.0 | average: 3.83 | 25th percentile: 1.75 | median: 2.5 | 75th percentile: 6.25 | max: 10.0

Number of Contributors vs. File Size: 6 points

client-play-json-v28/src/main/scala/com/gu/targeting/client/ANComponent.scala x: 5 # contributors y: 79 lines of code client-play-json-v28/src/main/scala/com/gu/targeting/client/Rule.scala x: 3 # contributors y: 14 lines of code client-play-json-v28/src/main/scala/com/gu/targeting/client/Fields.scala x: 2 # contributors y: 73 lines of code project/dependencies.scala x: 10 # contributors y: 28 lines of code client-play-json-v28/src/main/scala/com/gu/targeting/client/Campaign.scala x: 2 # contributors y: 79 lines of code client-play-json-v28/src/main/scala/com/gu/targeting/client/Exceptions.scala x: 1 # contributors y: 3 lines of code
79.0
lines of code
  min: 3.0
  average: 46.0
  25th percentile: 11.25
  median: 50.5
  75th percentile: 79.0
  max: 79.0
0 10.0
# contributors
min: 1.0 | average: 3.83 | 25th percentile: 1.75 | median: 2.5 | 75th percentile: 6.25 | max: 10.0

Number of Changes vs. Line Churn: 33 points

.gitignore x: 4 # changes y: 7 line churn version.sbt x: 42 # changes y: 162 line churn client-play-json-v28/src/main/scala/com/gu/targeting/client/ANComponent.scala x: 9 # changes y: 350 line churn client-play-json-v28/src/test/scala/com/gu/targeting/client/ANComponentTest.scala x: 4 # changes y: 200 line churn .github/workflows/release.yml x: 8 # changes y: 44 line churn project/plugins.sbt x: 11 # changes y: 77 line churn client-play-json-v28/src/main/scala/com/gu/targeting/client/Rule.scala x: 4 # changes y: 46 line churn client-play-json-v28/src/test/scala/com/gu/targeting/client/RuleTest.scala x: 4 # changes y: 126 line churn client-play-json-v28/src/main/scala/com/gu/targeting/client/AppleNewsItem.scala x: 4 # changes y: 282 line churn client-play-json-v28/src/main/scala/com/gu/targeting/client/Fields.scala x: 7 # changes y: 210 line churn build.sbt x: 23 # changes y: 689 line churn project/build.properties x: 8 # changes y: 20 line churn project/dependencies.scala x: 17 # changes y: 180 line churn .github/workflows/check-labels.yaml x: 2 # changes y: 18 line churn client-play-json-v28/src/main/scala/com/gu/targeting/client/Campaign.scala x: 4 # changes y: 214 line churn .github/workflows/snyk.yml x: 4 # changes y: 72 line churn .github/workflows/sbt-dependency-graph.yaml x: 1 # changes y: 30 line churn .tool-versions x: 1 # changes y: 1 line churn README.md x: 13 # changes y: 211 line churn .github/release.yml x: 3 # changes y: 52 line churn client-play-json-v28/src/main/scala/com/gu/targeting/client/Exceptions.scala x: 2 # changes y: 14 line churn client-play-json-v28/src/test/scala/com/gu/targeting/client/CampaignTest.scala x: 2 # changes y: 106 line churn client-play-json-v30/src x: 2 # changes y: 2 line churn src/main/scala/com/gu/targeting/client/Campaign.scala x: 26 # changes y: 718 line churn src/main/scala/com/gu/targeting/client/Exceptions.scala x: 6 # changes y: 28 line churn src/main/scala/com/gu/targeting/client/Fields.scala x: 29 # changes y: 428 line churn src/main/scala/com/gu/targeting/client/Rule.scala x: 8 # changes y: 138 line churn src/test/scala/com/gu/targeting/client/CampaignTest.scala x: 23 # changes y: 238 line churn src/test/scala/com/gu/targeting/client/RuleTest.scala x: 6 # changes y: 168 line churn targeting-client-play26/version.sbt x: 3 # changes y: 4 line churn src/main/scala/com/gu/targeting/client/rule_ast.scala x: 1 # changes y: 168 line churn src/main/scala/com/gu/targeting/client/S3.scala x: 4 # changes y: 224 line churn src/main/scala/com/gu/targeting/client/S3Client.scala x: 1 # changes y: 39 line churn
718.0
line churn
  min: 1.0
  average: 159.58
  25th percentile: 29.0
  median: 126.0
  75th percentile: 212.5
  max: 718.0
0 42.0
# changes
min: 1.0 | average: 8.67 | 25th percentile: 2.5 | median: 4.0 | 75th percentile: 10.0 | max: 42.0

Number of Contributors vs. Line Churn: 6 points

client-play-json-v28/src/main/scala/com/gu/targeting/client/ANComponent.scala x: 5 # contributors y: 350 line churn client-play-json-v28/src/main/scala/com/gu/targeting/client/Rule.scala x: 3 # contributors y: 46 line churn client-play-json-v28/src/main/scala/com/gu/targeting/client/Fields.scala x: 2 # contributors y: 210 line churn project/dependencies.scala x: 10 # contributors y: 180 line churn client-play-json-v28/src/main/scala/com/gu/targeting/client/Campaign.scala x: 2 # contributors y: 214 line churn client-play-json-v28/src/main/scala/com/gu/targeting/client/Exceptions.scala x: 1 # contributors y: 14 line churn
350.0
line churn
  min: 14.0
  average: 169.0
  25th percentile: 38.0
  median: 195.0
  75th percentile: 248.0
  max: 350.0
0 10.0
# contributors
min: 1.0 | average: 3.83 | 25th percentile: 1.75 | median: 2.5 | 75th percentile: 6.25 | max: 10.0

File Size vs. Line Churn: 6 points

client-play-json-v28/src/main/scala/com/gu/targeting/client/ANComponent.scala x: 79 lines of code y: 350 line churn client-play-json-v28/src/main/scala/com/gu/targeting/client/Rule.scala x: 14 lines of code y: 46 line churn client-play-json-v28/src/main/scala/com/gu/targeting/client/Fields.scala x: 73 lines of code y: 210 line churn project/dependencies.scala x: 28 lines of code y: 180 line churn client-play-json-v28/src/main/scala/com/gu/targeting/client/Campaign.scala x: 79 lines of code y: 214 line churn client-play-json-v28/src/main/scala/com/gu/targeting/client/Exceptions.scala x: 3 lines of code y: 14 line churn
350.0
line churn
  min: 14.0
  average: 169.0
  25th percentile: 38.0
  median: 195.0
  75th percentile: 248.0
  max: 350.0
0 79.0
lines of code
min: 3.0 | average: 46.0 | 25th percentile: 11.25 | median: 50.5 | 75th percentile: 79.0 | max: 79.0