The fastest HTTP/2 Go Web Framework. New, modern and easy to learn. Fast development with Code you control. Unbeatable cost-performance ratio :rocket:
This report presents the forensic synthetic code analysis of kataras/iris, a Go project with 25,565 GitHub stars. SynthScan v2.0 examined 126,875 lines of code across 1099 source files, recording 517 pattern matches distributed across 6 syntactic categories. The overall adjusted score of 4.0 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 517 distinct pattern matches across 6 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | iris_guide.go | 121 | } | COMMENT |
| LOW | iris_guide.go | 261 | // It registers one or more handlers to run before everything else (RouterMiddlewares) or | COMMENT |
| LOW | iris_guide.go | 281 | // Services registers one or more dependencies that APIs can use. | COMMENT |
| LOW | configuration.go | 81 | // | COMMENT |
| LOW | configuration.go | 161 | } | COMMENT |
| LOW | configuration.go | 481 | // WithOtherValue adds a value based on a key to the Other setting. | COMMENT |
| LOW | configuration.go | 501 | // | COMMENT |
| LOW | configuration.go | 621 | // TunnelingConfiguration contains configuration | COMMENT |
| LOW | configuration.go | 641 | // It can be retrieved by the context if needed (i.e router for subdomains) | COMMENT |
| LOW | configuration.go | 661 | // | COMMENT |
| LOW | configuration.go | 681 | // the Hijacker or Flusher interfaces when Timeout handler is registered. | COMMENT |
| LOW | configuration.go | 701 | // See `WithoutServerError(...)` function too. | COMMENT |
| LOW | configuration.go | 721 | // the requested path to the registered path | COMMENT |
| LOW | configuration.go | 741 | // instead of getting a 404 not found response back. | COMMENT |
| LOW | configuration.go | 761 | // It gives the router the feature to add routes while in serve-time, | COMMENT |
| LOW | configuration.go | 781 | // See `core/router/handler#FireErrorCode` and `Context.EndRequest` for more details. | COMMENT |
| LOW | configuration.go | 801 | // | COMMENT |
| LOW | configuration.go | 821 | // FireEmptyFormError returns if set to tue true then the `context.ReadForm/ReadQuery/ReadBody` | COMMENT |
| LOW | configuration.go | 841 | // +----------------------------------------------------+ | COMMENT |
| LOW | configuration.go | 861 | LanguageContextKey string `ini:"language_context_key" json:"languageContextKey,omitempty" yaml:"LanguageContextKey" tom | COMMENT |
| LOW | configuration.go | 881 | // then its associated value is always nil, | COMMENT |
| LOW | configuration.go | 901 | // FallbackViewContextKey is the context's values key | COMMENT |
| LOW | configuration.go | 921 | // "True-Client-Ip", | COMMENT |
| LOW | configuration.go | 941 | // }, | COMMENT |
| LOW | configuration.go | 961 | // } | COMMENT |
| LOW | HISTORY.md | 861 | // * func(accepts iris.Context) returns <D> or (<D>, error) | COMMENT |
| LOW | cli.go | 21 | // runs under https://github.com/kataras/iris-cli and if so | COMMENT |
| LOW | iris.go | 81 | // Minifier to minify responses. | COMMENT |
| LOW | iris.go | 221 | func (app *Application) String() string { | COMMENT |
| LOW | iris.go | 241 | // 'from' can be the root domain(app) when the 'to' is not the root domain and visa-versa. | COMMENT |
| LOW | iris.go | 281 | // Logger returns the golog logger instance(pointer) that is being used inside the "app". | COMMENT |
| LOW | iris.go | 301 | // app.Logger().Debug/Debugf("...") | COMMENT |
| LOW | iris.go | 381 | // Customize the minifier through `Application.Minifier()`. | COMMENT |
| LOW | iris.go | 401 | // - image/svg+xml | COMMENT |
| LOW | iris.go | 441 | COMMENT | |
| LOW | iris.go | 461 | return app.contextErrorHandler | COMMENT |
| LOW | iris.go | 661 | return err | COMMENT |
| LOW | iris.go | 801 | } | COMMENT |
| LOW | iris.go | 821 | // i.e to add events for shutdown, serve or error. | COMMENT |
| LOW | iris.go | 841 | // on that specific host that this function will create to start the server. | COMMENT |
| LOW | iris.go | 861 | // Addr should have the form of [host]:port, i.e localhost:8080 or :8080. | COMMENT |
| LOW | iris.go | 881 | var ( | COMMENT |
| LOW | iris.go | 901 | // Note that if Server.Handler is nil then the server is automatically ran | COMMENT |
| LOW | iris.go | 921 | // "certFileOrContents" & "keyFileOrContents" should be filenames with their extensions | COMMENT |
| LOW | iris.go | 941 | COMMENT | |
| LOW | iris.go | 961 | // which will redirect all http versions to their https, including subdomains as well. | COMMENT |
| LOW | iris.go | 1001 | } | COMMENT |
| LOW | iris.go | 1021 | COMMENT | |
| LOW | aliases.go | 41 | // | COMMENT |
| LOW | aliases.go | 61 | // DecodeFunc is a generic type of decoder function. | COMMENT |
| LOW | aliases.go | 81 | // If Handler panics, the server (the caller of Handler) assumes that the effect of the panic was isolated to the activ | COMMENT |
| LOW | aliases.go | 101 | // | COMMENT |
| LOW | aliases.go | 121 | // It is an alias of the `context#JSONP` type. | COMMENT |
| LOW | aliases.go | 141 | // Party is just a group joiner of routes which have the same prefix and share same middleware(s) also. | COMMENT |
| LOW | aliases.go | 161 | // DirCacheOptions holds the options for the cached file system. | COMMENT |
| LOW | aliases.go | 181 | // | COMMENT |
| LOW | aliases.go | 201 | Cookie = http.Cookie | COMMENT |
| LOW | aliases.go | 261 | // Django view engine. | COMMENT |
| LOW | aliases.go | 281 | // FallbackViewFunc is a function that can be registered | COMMENT |
| LOW | aliases.go | 301 | } | COMMENT |
| 442 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | HISTORY.md | 184 | - Replace [russross/blackfriday](github.com/russross/blackfriday/v2) with [gomarkdown](https://github.com/gomarkdown/mar | CODE |
| HIGH | HISTORY.md | 1300 | - Add `mvc/Application#SortByNumMethods` as requested at [#1343](https://github.com/kataras/iris/issues/1343#issuecommen | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | sessions/transcoding.go | 56 | // Don't forget to initialize a call of gob.Register when necessary. | COMMENT |
| MEDIUM | _examples/database/mysql/sql/service.go | 79 | // Note that this is a basic implementation which just takes care our current needs. | COMMENT |
| LOW | _examples/sessions/database/boltdb/main.go | 51 | // Don't forget to initialize a call of gob.Register when necessary. | COMMENT |
| MEDIUM | _examples/dependency-injection/basic/main.go | 28 | /* Here is how you can inject a return value from a handler, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | _examples/http-server/README.md | 83 | app.Run(iris.AutoTLS(":443", "example.com", "admin@example.com")) | CODE |
| LOW | _examples/sessions/overview/example/example.go | 59 | session.Set("struct", BusinessModel{Name: "John Doe"}) | CODE |
| LOW | _examples/dependency-injection/smart-contract/main.go | 22 | // http://localhost:8080/users?query=[?Name == 'John Doe'].Age | COMMENT |
| LOW | _examples/dependency-injection/smart-contract/main.go | 23 | // <- client will receive the age of a user which his name is "John Doe". | COMMENT |
| LOW | _examples/dependency-injection/smart-contract/main.go | 65 | {"John Doe", 17}, | CODE |
| LOW | _examples/dependency-injection/smart-contract/main.go | 146 | // i.e [?Name == 'John Doe'].Age # to output the [age] of a user which his name is "John Doe". | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | _examples/routing/party-controller/main.go | 18 | APIKey: "{YOUR_API_KEY}", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | _examples/websocket/basic/browserify/app.js | 30 | function handleNamespaceConnectedConn(nsConn) { | CODE |
| LOW | _examples/websocket/basic/browser/index.html | 41 | function handleNamespaceConnectedConn(nsConn) { | CODE |