File Size Overall
  • There are 40 files with 2,597 lines of code.
    • 0 very long files (0 lines of code)
    • 1 long files (569 lines of code)
    • 3 medium size files (847 lines of code)
    • 2 small files (267 lines of code)
    • 34 very small files (914 lines of code)
0% | 21% | 32% | 10% | 35%
Legend:
1001+
501-1000
201-500
101-200
1-100


explore: grouped by folders | grouped by size | sunburst | 3D view
File Size per Extension
1001+
501-1000
201-500
101-200
1-100
yaml0% | 89% | 0% | 0% | 10%
scala0% | 0% | 47% | 8% | 44%
xml0% | 0% | 0% | 69% | 30%
File Size per Logical Decomposition
primary
1001+
501-1000
201-500
101-200
1-100
ROOT0% | 90% | 0% | 0% | 9%
api0% | 0% | 43% | 13% | 43%
.github0% | 0% | 0% | 0% | 100%
Longest Files (Top 40)
File# lines# units
569 -
Store.scala
in api/src/main/scala/com/gu/adapters/store
313 16
store.scala
in api/src/main/scala/com/gu/core/store
294 20
AvatarServlet.scala
in api/src/main/scala/com/gu/adapters/http
240 6
Authentication.scala
in api/src/main/scala/com/gu/adapters/http
150 6
117 -
59 -
errors.scala
in api/src/main/scala/com/gu/core/models
59 7
Filter.scala
in api/src/main/scala/com/gu/adapters/http
58 2
SqsDeletionConsumer.scala
in api/src/main/scala/com/gu/adapters/queue
56 2
SwaggerOps.scala
in api/src/main/scala/com/gu/adapters/http
55 -
Notifications.scala
in api/src/main/scala/com/gu/adapters/notifications
53 4
Config.scala
in api/src/main/scala/com/gu/adapters/config
51 2
Image.scala
in api/src/main/scala/com/gu/adapters/http
42 4
ErrorHandling.scala
in api/src/main/scala/com/gu/core/utils
40 5
responses.scala
in api/src/main/scala/com/gu/adapters/http
39 5
ScalatraBootstrap.scala
in api/src/main/scala
31 2
IOUtils.scala
in api/src/main/scala/com/gu/adapters/http
29 3
JsonFormats.scala
in api/src/main/scala/com/gu/adapters/http
27 -
logback-access.xml
in api/src/main/resources
26 -
logback.xml
in api/src/main/resources
25 -
DeletionEvent.scala
in api/src/main/scala/com/gu/core/models
23 1
JettyLauncher.scala
in api/src/main/scala/com/gu/adapters/http
23 -
AvatarSwagger.scala
in api/src/main/scala/com/gu/adapters/http
21 -
Links.scala
in api/src/main/scala/com/gu/adapters/http
18 1
IdentityConfig.scala
in api/src/main/scala/com/gu/adapters/config
17 -
Pekko.scala
in api/src/main/scala/com/gu/core/pekko
15 1
utils.scala
in api/src/main/scala/com/gu/core/utils
15 2
successes.scala
in api/src/main/scala/com/gu/core/models
15 -
AuthorizedApiServlet.scala
in api/src/main/scala/com/gu/adapters/http
15 1
statuses.scala
in api/src/main/scala/com/gu/core/models
14 1
Avatar.scala
in api/src/main/scala/com/gu/core/models
14 -
ServletWithErrorHandling.scala
in api/src/main/scala/com/gu/adapters/http
13 1
User.scala
in api/src/main/scala/com/gu/core/models
11 1
AWSCredentials.scala
in api/src/main/scala/com/gu/auth
11 -
order.scala
in api/src/main/scala/com/gu/core/models
10 1
Req.scala
in api/src/main/scala/com/gu/adapters/http
9 1
Filters.scala
in api/src/main/scala/com/gu/core/models
8 -
dependabot.yml
in .github
6 -
params.scala
in api/src/main/scala/com/gu/adapters/http
6 -
Large Files That Change Often (Top 17)
To change a file, an AI coding agent (or a person) has to read it: these files are read the most for the changes in the past year (lines × changes).
File# lines≈ tokens
to read
# changes
(1y)
≈ lines edited
per change
lines read per
line changed
Store.scala
in api/src/main/scala/com/gu/adapters/store
313 ~2k–5k 2 ~50 ~5
store.scala
in api/src/main/scala/com/gu/core/store
294 ~2k–5k 2 ~50 ~7
AvatarServlet.scala
in api/src/main/scala/com/gu/adapters/http
240 ~1.5k–5k 2 ~20 ~15
Authentication.scala
in api/src/main/scala/com/gu/adapters/http
150 ~1k–3k 2 ~20 ~7
Image.scala
in api/src/main/scala/com/gu/adapters/http
42 under 1k 4 ~10 ~3
errors.scala
in api/src/main/scala/com/gu/core/models
59 ~300–1k 2 ~30 ~2
Filter.scala
in api/src/main/scala/com/gu/adapters/http
58 ~300–1k 2 ~30 ~2
SwaggerOps.scala
in api/src/main/scala/com/gu/adapters/http
55 ~300–1k 2 ~15 ~5
Notifications.scala
in api/src/main/scala/com/gu/adapters/notifications
53 ~300–1k 2 ~15 ~3
responses.scala
in api/src/main/scala/com/gu/adapters/http
39 under 1k 2 ~10 ~5
JsonFormats.scala
in api/src/main/scala/com/gu/adapters/http
27 under 1k 2 ~10 ~3
DeletionEvent.scala
in api/src/main/scala/com/gu/core/models
23 under 1k 2 ~15 ~2
AvatarSwagger.scala
in api/src/main/scala/com/gu/adapters/http
21 under 1k 2 ~7 ~3
statuses.scala
in api/src/main/scala/com/gu/core/models
14 under 1k 2 ~10 ~2
AWSCredentials.scala
in api/src/main/scala/com/gu/auth
11 under 1k 2 ~7 ~2
Req.scala
in api/src/main/scala/com/gu/adapters/http
9 under 1k 2 ~3 ~2
params.scala
in api/src/main/scala/com/gu/adapters/http
6 under 1k 2 ~7 ~1

Tokens are lines × 7 to 14 (analysis.fileReadsForChanges). Lines edited per change are the file's lines added and deleted divided by its commits over the whole history. Agents read about 2,000 lines at a time: when a 17,000-line file was split into modules, the tokens an agent read for the same change fell by 83% (The Economic Benefit of Refactoring, 2026).

Files With Most Units (Top 24)
File# lines# units
store.scala
in api/src/main/scala/com/gu/core/store
294 20
Store.scala
in api/src/main/scala/com/gu/adapters/store
313 16
errors.scala
in api/src/main/scala/com/gu/core/models
59 7
Authentication.scala
in api/src/main/scala/com/gu/adapters/http
150 6
AvatarServlet.scala
in api/src/main/scala/com/gu/adapters/http
240 6
ErrorHandling.scala
in api/src/main/scala/com/gu/core/utils
40 5
responses.scala
in api/src/main/scala/com/gu/adapters/http
39 5
Image.scala
in api/src/main/scala/com/gu/adapters/http
42 4
Notifications.scala
in api/src/main/scala/com/gu/adapters/notifications
53 4
IOUtils.scala
in api/src/main/scala/com/gu/adapters/http
29 3
ScalatraBootstrap.scala
in api/src/main/scala
31 2
utils.scala
in api/src/main/scala/com/gu/core/utils
15 2
Config.scala
in api/src/main/scala/com/gu/adapters/config
51 2
Filter.scala
in api/src/main/scala/com/gu/adapters/http
58 2
SqsDeletionConsumer.scala
in api/src/main/scala/com/gu/adapters/queue
56 2
Pekko.scala
in api/src/main/scala/com/gu/core/pekko
15 1
statuses.scala
in api/src/main/scala/com/gu/core/models
14 1
DeletionEvent.scala
in api/src/main/scala/com/gu/core/models
23 1
order.scala
in api/src/main/scala/com/gu/core/models
10 1
User.scala
in api/src/main/scala/com/gu/core/models
11 1
AuthorizedApiServlet.scala
in api/src/main/scala/com/gu/adapters/http
15 1
Links.scala
in api/src/main/scala/com/gu/adapters/http
18 1
Req.scala
in api/src/main/scala/com/gu/adapters/http
9 1
ServletWithErrorHandling.scala
in api/src/main/scala/com/gu/adapters/http
13 1
Files With Long Lines (Top 12)

There are 12 files with lines longer than 120 characters. In total, there are 33 long lines.

File# lines# units# long lines
Store.scala
in api/src/main/scala/com/gu/adapters/store
313 16 8
store.scala
in api/src/main/scala/com/gu/core/store
294 20 6
AuthorizedApiServlet.scala
in api/src/main/scala/com/gu/adapters/http
15 1 4
ServletWithErrorHandling.scala
in api/src/main/scala/com/gu/adapters/http
13 1 4
errors.scala
in api/src/main/scala/com/gu/core/models
59 7 2
AvatarServlet.scala
in api/src/main/scala/com/gu/adapters/http
240 6 2
Filter.scala
in api/src/main/scala/com/gu/adapters/http
58 2 2
569 - 1
ScalatraBootstrap.scala
in api/src/main/scala
31 2 1
Authentication.scala
in api/src/main/scala/com/gu/adapters/http
150 6 1
SqsDeletionConsumer.scala
in api/src/main/scala/com/gu/adapters/queue
56 2 1
Notifications.scala
in api/src/main/scala/com/gu/adapters/notifications
53 4 1
Correlations

File Size vs. Commits (all time): 40 points

api/src/main/scala/com/gu/adapters/http/AvatarServlet.scala x: 90 commits (all time) y: 240 lines of code api/src/main/scala/com/gu/adapters/http/AvatarSwagger.scala x: 8 commits (all time) y: 21 lines of code api/src/main/scala/com/gu/adapters/http/Filter.scala x: 12 commits (all time) y: 58 lines of code api/src/main/scala/com/gu/adapters/http/JsonFormats.scala x: 11 commits (all time) y: 27 lines of code api/src/main/scala/com/gu/adapters/http/Req.scala x: 13 commits (all time) y: 9 lines of code api/src/main/scala/com/gu/adapters/http/SwaggerOps.scala x: 15 commits (all time) y: 55 lines of code api/src/main/scala/com/gu/adapters/http/params.scala x: 11 commits (all time) y: 6 lines of code api/src/main/scala/com/gu/adapters/http/responses.scala x: 15 commits (all time) y: 39 lines of code api/src/main/scala/com/gu/adapters/notifications/Notifications.scala x: 28 commits (all time) y: 53 lines of code api/src/main/scala/com/gu/adapters/store/Store.scala x: 54 commits (all time) y: 313 lines of code api/src/main/scala/com/gu/auth/AWSCredentials.scala x: 10 commits (all time) y: 11 lines of code api/src/main/scala/com/gu/core/models/DeletionEvent.scala x: 4 commits (all time) y: 23 lines of code api/src/main/scala/com/gu/core/models/errors.scala x: 12 commits (all time) y: 59 lines of code api/src/main/scala/com/gu/core/models/statuses.scala x: 5 commits (all time) y: 14 lines of code api/src/main/scala/com/gu/core/store/store.scala x: 38 commits (all time) y: 294 lines of code api/src/main/scala/com/gu/adapters/http/Image.scala x: 19 commits (all time) y: 42 lines of code api/src/main/scala/com/gu/adapters/http/Authentication.scala x: 43 commits (all time) y: 150 lines of code api/src/main/scala/com/gu/adapters/config/Config.scala x: 31 commits (all time) y: 51 lines of code api/src/main/scala/com/gu/adapters/queue/SqsDeletionConsumer.scala x: 17 commits (all time) y: 56 lines of code api/src/main/scala/ScalatraBootstrap.scala x: 31 commits (all time) y: 31 lines of code api/src/main/scala/com/gu/adapters/http/JettyLauncher.scala x: 8 commits (all time) y: 23 lines of code api/src/main/scala/com/gu/adapters/http/IOUtils.scala x: 8 commits (all time) y: 29 lines of code riff-raff.yaml x: 4 commits (all time) y: 59 lines of code cloudformation.yaml x: 2 commits (all time) y: 569 lines of code api/src/main/scala/com/gu/adapters/http/AuthorizedApiServlet.scala x: 7 commits (all time) y: 15 lines of code api/src/main/scala/com/gu/adapters/http/ServletWithErrorHandling.scala x: 5 commits (all time) y: 13 lines of code api/src/main/scala/com/gu/core/models/User.scala x: 9 commits (all time) y: 11 lines of code api/src/main/scala/com/gu/core/utils/ErrorHandling.scala x: 9 commits (all time) y: 40 lines of code api/src/main/resources/logback-access.xml x: 7 commits (all time) y: 26 lines of code api/src/main/resources/logback.xml x: 9 commits (all time) y: 25 lines of code .github/dependabot.yml x: 1 commits (all time) y: 6 lines of code api/src/main/scala/com/gu/core/pekko/Pekko.scala x: 1 commits (all time) y: 15 lines of code api/src/main/scala/com/gu/adapters/config/IdentityConfig.scala x: 4 commits (all time) y: 17 lines of code api/src/main/scala/com/gu/core/models/successes.scala x: 8 commits (all time) y: 15 lines of code api/src/main/scala/com/gu/core/models/Filters.scala x: 6 commits (all time) y: 8 lines of code api/src/main/scala/com/gu/core/models/order.scala x: 2 commits (all time) y: 10 lines of code api/src/main/scala/com/gu/adapters/http/Links.scala x: 11 commits (all time) y: 18 lines of code api/scalastyle-config.xml x: 2 commits (all time) y: 117 lines of code
569.0
lines of code
  min: 6.0
  average: 64.93
  25th percentile: 14.25
  median: 25.5
  75th percentile: 55.75
  max: 569.0
0 90.0
commits (all time)
min: 1.0 | average: 14.55 | 25th percentile: 5.0 | median: 9.0 | 75th percentile: 15.0 | max: 90.0

File Size vs. Contributors (all time): 40 points

api/src/main/scala/com/gu/adapters/http/AvatarServlet.scala x: 12 contributors (all time) y: 240 lines of code api/src/main/scala/com/gu/adapters/http/AvatarSwagger.scala x: 4 contributors (all time) y: 21 lines of code api/src/main/scala/com/gu/adapters/http/Filter.scala x: 6 contributors (all time) y: 58 lines of code api/src/main/scala/com/gu/adapters/http/JsonFormats.scala x: 5 contributors (all time) y: 27 lines of code api/src/main/scala/com/gu/adapters/http/Req.scala x: 5 contributors (all time) y: 9 lines of code api/src/main/scala/com/gu/adapters/http/SwaggerOps.scala x: 5 contributors (all time) y: 55 lines of code api/src/main/scala/com/gu/adapters/http/params.scala x: 4 contributors (all time) y: 6 lines of code api/src/main/scala/com/gu/adapters/http/responses.scala x: 6 contributors (all time) y: 39 lines of code api/src/main/scala/com/gu/adapters/notifications/Notifications.scala x: 7 contributors (all time) y: 53 lines of code api/src/main/scala/com/gu/adapters/store/Store.scala x: 11 contributors (all time) y: 313 lines of code api/src/main/scala/com/gu/core/models/DeletionEvent.scala x: 2 contributors (all time) y: 23 lines of code api/src/main/scala/com/gu/core/models/errors.scala x: 6 contributors (all time) y: 59 lines of code api/src/main/scala/com/gu/core/models/statuses.scala x: 3 contributors (all time) y: 14 lines of code api/src/main/scala/com/gu/core/store/store.scala x: 8 contributors (all time) y: 294 lines of code api/src/main/scala/com/gu/adapters/http/Image.scala x: 7 contributors (all time) y: 42 lines of code api/src/main/scala/com/gu/adapters/http/Authentication.scala x: 11 contributors (all time) y: 150 lines of code api/src/main/scala/com/gu/adapters/config/Config.scala x: 9 contributors (all time) y: 51 lines of code api/src/main/scala/com/gu/adapters/queue/SqsDeletionConsumer.scala x: 9 contributors (all time) y: 56 lines of code api/src/main/scala/ScalatraBootstrap.scala x: 9 contributors (all time) y: 31 lines of code api/src/main/scala/com/gu/adapters/http/JettyLauncher.scala x: 3 contributors (all time) y: 23 lines of code api/src/main/scala/com/gu/adapters/http/IOUtils.scala x: 3 contributors (all time) y: 29 lines of code riff-raff.yaml x: 1 contributors (all time) y: 59 lines of code cloudformation.yaml x: 1 contributors (all time) y: 569 lines of code api/src/main/scala/com/gu/adapters/http/AuthorizedApiServlet.scala x: 4 contributors (all time) y: 15 lines of code api/src/main/scala/com/gu/adapters/http/ServletWithErrorHandling.scala x: 3 contributors (all time) y: 13 lines of code api/src/main/scala/com/gu/core/models/User.scala x: 6 contributors (all time) y: 11 lines of code api/src/main/scala/com/gu/core/utils/ErrorHandling.scala x: 4 contributors (all time) y: 40 lines of code api/src/main/resources/logback-access.xml x: 2 contributors (all time) y: 26 lines of code api/src/main/resources/logback.xml x: 3 contributors (all time) y: 25 lines of code .github/dependabot.yml x: 1 contributors (all time) y: 6 lines of code api/src/main/scala/com/gu/core/pekko/Pekko.scala x: 1 contributors (all time) y: 15 lines of code api/src/main/scala/com/gu/adapters/config/IdentityConfig.scala x: 2 contributors (all time) y: 17 lines of code api/src/main/scala/com/gu/core/models/Filters.scala x: 3 contributors (all time) y: 8 lines of code api/src/main/scala/com/gu/core/models/order.scala x: 1 contributors (all time) y: 10 lines of code api/src/main/scala/com/gu/adapters/http/Links.scala x: 3 contributors (all time) y: 18 lines of code api/scalastyle-config.xml x: 1 contributors (all time) y: 117 lines of code
569.0
lines of code
  min: 6.0
  average: 64.93
  25th percentile: 14.25
  median: 25.5
  75th percentile: 55.75
  max: 569.0
0 12.0
contributors (all time)
min: 1.0 | average: 4.65 | 25th percentile: 3.0 | median: 4.0 | 75th percentile: 6.0 | max: 12.0

File Size vs. Commits (30 days): 0 points

No data for "commits (30d)" vs. "lines of code".

File Size vs. Contributors (30 days): 0 points

No data for "contributors (30d)" vs. "lines of code".


File Size vs. Commits (90 days): 17 points

api/src/main/scala/com/gu/adapters/http/AvatarServlet.scala x: 2 commits (90d) y: 240 lines of code api/src/main/scala/com/gu/adapters/http/AvatarSwagger.scala x: 2 commits (90d) y: 21 lines of code api/src/main/scala/com/gu/adapters/http/Filter.scala x: 2 commits (90d) y: 58 lines of code api/src/main/scala/com/gu/adapters/http/JsonFormats.scala x: 2 commits (90d) y: 27 lines of code api/src/main/scala/com/gu/adapters/http/Req.scala x: 2 commits (90d) y: 9 lines of code api/src/main/scala/com/gu/adapters/http/SwaggerOps.scala x: 2 commits (90d) y: 55 lines of code api/src/main/scala/com/gu/adapters/http/params.scala x: 2 commits (90d) y: 6 lines of code api/src/main/scala/com/gu/adapters/http/responses.scala x: 2 commits (90d) y: 39 lines of code api/src/main/scala/com/gu/adapters/notifications/Notifications.scala x: 2 commits (90d) y: 53 lines of code api/src/main/scala/com/gu/adapters/store/Store.scala x: 2 commits (90d) y: 313 lines of code api/src/main/scala/com/gu/auth/AWSCredentials.scala x: 2 commits (90d) y: 11 lines of code api/src/main/scala/com/gu/core/models/DeletionEvent.scala x: 2 commits (90d) y: 23 lines of code api/src/main/scala/com/gu/core/models/statuses.scala x: 2 commits (90d) y: 14 lines of code api/src/main/scala/com/gu/core/store/store.scala x: 2 commits (90d) y: 294 lines of code api/src/main/scala/com/gu/adapters/http/Image.scala x: 4 commits (90d) y: 42 lines of code api/src/main/scala/com/gu/adapters/http/Authentication.scala x: 2 commits (90d) y: 150 lines of code
313.0
lines of code
  min: 6.0
  average: 83.18
  25th percentile: 17.5
  median: 42.0
  75th percentile: 104.5
  max: 313.0
0 4.0
commits (90d)
min: 2.0 | average: 2.12 | 25th percentile: 2.0 | median: 2.0 | 75th percentile: 2.0 | max: 4.0

File Size vs. Contributors (90 days): 17 points

api/src/main/scala/com/gu/adapters/http/AvatarServlet.scala x: 1 contributors (90d) y: 240 lines of code api/src/main/scala/com/gu/adapters/http/AvatarSwagger.scala x: 1 contributors (90d) y: 21 lines of code api/src/main/scala/com/gu/adapters/http/Filter.scala x: 1 contributors (90d) y: 58 lines of code api/src/main/scala/com/gu/adapters/http/JsonFormats.scala x: 1 contributors (90d) y: 27 lines of code api/src/main/scala/com/gu/adapters/http/Req.scala x: 1 contributors (90d) y: 9 lines of code api/src/main/scala/com/gu/adapters/http/SwaggerOps.scala x: 1 contributors (90d) y: 55 lines of code api/src/main/scala/com/gu/adapters/http/params.scala x: 1 contributors (90d) y: 6 lines of code api/src/main/scala/com/gu/adapters/http/responses.scala x: 1 contributors (90d) y: 39 lines of code api/src/main/scala/com/gu/adapters/notifications/Notifications.scala x: 1 contributors (90d) y: 53 lines of code api/src/main/scala/com/gu/adapters/store/Store.scala x: 1 contributors (90d) y: 313 lines of code api/src/main/scala/com/gu/auth/AWSCredentials.scala x: 1 contributors (90d) y: 11 lines of code api/src/main/scala/com/gu/core/models/DeletionEvent.scala x: 1 contributors (90d) y: 23 lines of code api/src/main/scala/com/gu/core/models/statuses.scala x: 1 contributors (90d) y: 14 lines of code api/src/main/scala/com/gu/core/store/store.scala x: 1 contributors (90d) y: 294 lines of code api/src/main/scala/com/gu/adapters/http/Image.scala x: 1 contributors (90d) y: 42 lines of code api/src/main/scala/com/gu/adapters/http/Authentication.scala x: 1 contributors (90d) y: 150 lines of code
313.0
lines of code
  min: 6.0
  average: 83.18
  25th percentile: 17.5
  median: 42.0
  75th percentile: 104.5
  max: 313.0
0 1.0
contributors (90d)
min: 1.0 | average: 1.0 | 25th percentile: 1.0 | median: 1.0 | 75th percentile: 1.0 | max: 1.0
About This Analysis
  • File size measurements show the distribution of size of files.
  • Files are classified in four categories based on their size (lines of code): 1-100 (very small files), 101-200 (small files), 201-500 (medium size files), 501-1000 (long files), 1001+(very long files).
  • It is a good practice to keep files small. Long files may become "bloaters", code that have increased to such gargantuan proportions that they are hard to work with.
Learn more...