Repository Analysis

binwiederhier/ntfy

Send push notifications to your phone or desktop using PUT/POST

0.9 Likely human-written View on GitHub
0.9
Adjusted Score
0.9
Raw Score
100%
Time Factor
2026-05-20
Last Push
30,474
Stars
Go
Language
146,100
Lines of Code
374
Files
110
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 1HIGH 2MEDIUM 0LOW 107

Pattern Findings

110 matches across 6 categories. Click a row to expand file-level details.

Over-Commented Block101 hits · 99 pts
SeverityFileLineSnippet
LOWs3/client.go21const (
LOWs3/client.go41// },
LOWs3/client.go81// single PUT request without buffering. The read is limited to untrustedLength bytes;
LOWtools/loadtest/main.go1// Load test program for ntfy staging server.
LOWtools/s3cli/main.go1// Command s3cli is a minimal CLI for testing the s3 package. It supports put, get, rm, and ls.
LOWutil/lookup_cache.go1package util
LOWutil/batching_queue.go1package util
LOWutil/sprig/defaults.go21func defaultValue(d any, given ...any) any {
LOWutil/sprig/defaults.go121// This function ignores any errors that occur during decoding.
LOWutil/sprig/defaults.go141// - any: The decoded value
LOWutil/sprig/defaults.go181// This function ignores any errors that occur during encoding.
LOWutil/sprig/defaults.go201// - string: The indented JSON string representation of the value
LOWutil/sprig/defaults.go241 enc.SetEscapeHTML(false)
LOWutil/sprig/numeric.go61// Returns:
LOWutil/sprig/numeric.go121// add sums all the provided values.
LOWutil/sprig/numeric.go141// - a: The value to subtract from
LOWutil/sprig/numeric.go161// Panics:
LOWutil/sprig/numeric.go201//
LOWutil/sprig/numeric.go241//
LOWutil/sprig/numeric.go301 }
LOWutil/sprig/numeric.go361// ceil returns the least integer value greater than or equal to the input.
LOWutil/sprig/numeric.go421}
LOWutil/sprig/reflect.go21// typeIsLike returns true if the src is the type named in target or a pointer to that type.
LOWutil/sprig/reflect.go41// Returns:
LOWutil/sprig/reflect.go61// The kind represents the specific Go type category (e.g., "string", "int", "map", "slice").
LOWutil/sprig/regex.go21// mustRegexMatch checks if a string matches a regular expression pattern.
LOWutil/sprig/regex.go41// - n: The maximum number of matches to return (negative means all matches)
LOWutil/sprig/regex.go101// regexReplaceAll replaces all matches of a regular expression with a replacement string.
LOWutil/sprig/regex.go121// Parameters:
LOWutil/sprig/regex.go141// Parameters:
LOWutil/sprig/regex.go161//
LOWutil/sprig/regex.go181// Returns:
LOWutil/sprig/strings.go41// base32encode encodes a string to base32 using standard encoding.
LOWutil/sprig/strings.go101 return strings.Join(out, " ")
LOWutil/sprig/strings.go121// - spaces: The number of spaces to add
LOWutil/sprig/strings.go141 return "\n" + indent(spaces, v)
LOWutil/sprig/strings.go161// - one: The singular form of the word
LOWutil/sprig/strings.go241// It handles various types:
LOWutil/sprig/strings.go261 case fmt.Stringer:
LOWutil/sprig/strings.go301// join concatenates the elements of a slice with a separator.
LOWutil/sprig/strings.go321// Returns:
LOWutil/sprig/strings.go341func splitList(sep, orig string) []string {
LOWutil/sprig/strings.go361 }
LOWutil/sprig/strings.go381 if start < 0 {
LOWutil/sprig/strings.go401// - If count exceeds loopExecutionLimit
LOWutil/sprig/strings.go421func trimAll(a, b string) string {
LOWutil/sprig/strings.go441// Note that the parameter order is reversed from the standard strings.TrimSuffix function.
LOWutil/sprig/strings.go461func contains(substr string, str string) bool {
LOWutil/sprig/date.go21
LOWutil/sprig/date.go41// If the timezone is invalid, UTC is used.
LOWutil/sprig/date.go81
LOWutil/sprig/date.go101// Parameters:
LOWutil/sprig/date.go201 }
LOWutil/sprig/date.go221// Parameters:
LOWutil/sprig/dict.go1package sprig
LOWutil/sprig/dict.go21// Modifies the map in place and returns the modified map.
LOWutil/sprig/dict.go41// - key: The key to remove
LOWutil/sprig/dict.go181
LOWserver/server.go1281 return cache, firebase, email, call, template, unifiedpush, priorityStr, nil
LOWserver/server.go2261 return next(w, r, v)
41 more matches not shown…
Synthetic Comment Markers2 hits · 12 pts
SeverityFileLineSnippet
HIGHdocs/releases.md176if things are working (or not working). There is a [one-off migration tool](https://github.com/binwiederhier/ntfy/tree/m
HIGHdocs/static/js/config-generator.js5// This code is entirely AI generated, but this very comment is not. Phil wrote this. Hi!
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippet
CRITICALweb/public/sw.js239 const action = event.notification.data.message.actions.find(({ label }) => event.action === label);
Verbosity Indicators3 hits · 4 pts
SeverityFileLineSnippet
LOWs3/client_multipart.go99 // Step 1: Initiate multipart upload
LOWs3/client_multipart.go105 // Step 2: Upload parts
LOWs3/client_multipart.go131 // Step 3: Complete multipart upload
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippet
LOWdocs/config.md321<input type="text" data-key="web-push-email-address" placeholder="admin@example.com">
LOWdocs/static/js/config-generator.js858 prefill(modal, "web-push-email-address", "admin@example.com");
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippet
LOWserver/server.go82 // If changed, don't forget to update Android App and auth_sqlite.go