Analysed by SourceGraph (version 0.7.0.7) using Graphalyze (version 0.14.1.1)
Sunday 22 November, 2015
Please note that the source-code analysis in this document is not necessarily perfect: SourceGraph is not a refactoring tool, and it's usage of Classes is still premature.
Implicitly exported entities refer to class methods that are instantiated but defined elsewhere, or entities whose names start with an underscore . Note that even for Main modules, these implicit exports are included.
All graph visualisations link to larger SVG versions of the same graph.
The following source files were unable to be parsed; this may result in some analysis failures:
thentos-core/src/Paths_thentos_core__.hs
thentos-core/src/Thentos/Util.hs
thentos-core/src/Thentos/Transaction/Core.hs
Here is the current module grouping of functions:
Error running utility program: Error messages from dot: Error: trouble in init_rank %0 10 %0 2 %0 2 %0 2 %0 8 %0 2 %0 4 %0 3 %0 7 %0 5 %0 5 %0 5 %0 9 %0 5 %0 8 %0 4 %0 6 %0 3 %0 7 %0 5 %0 1 725 1 726 1 727 1 728 2 729 1 730 1 731 1 734 1 735 1 736 1 737 1 738 1 739 1 741 1 742 1 724 2 442 2 407 2 433 1 409 1 394 1 399 2 405 1 408 1 418 1 419 1 420 2 421 1 422 1 423 1 424 1 425 1 426 1 427 1 428 1 429 1 430 1 431 1 432 1 434 1 435 1 436 1 437 2 438 1 391 1 384 1 %0 1 383 1 388 1 385 2 382 1 392 1 387 2 386 1 389 1 390 2 345 1 353 1 359 2 349 1 346 1 344 1 348 1 350 1 352 1 354 2 355 1 356 2 381 1 358 1 380 1 361 1 363 1 366 1 368 1 371 1 373 1 379 3 378 1 375 1 347 1 351 1 357 1 360 1 362 1 364 1 365 1 367 1 369 1 370 1 372 1 374 2 376 1 377 1 338 1 333 1 331 2 334 1 335 1 339 1 330 1 326 2 337 2 341 1 343 1 327 1 328 2 329 2 332 1 336 1 340 1 342 1 308 2 312 1 318 1 322 2 321 3 319 2 302 2 313 2 306 1 301 1 303 1 304 1 305 1 307 1 309 1 310 1 311 1 314 1 315 1 316 1 317 1 320 1 323 1 324 1 325 1 147 4 141 1 142 1 143 1 144 1 145 1 146 1 148 1 149 1 150 3 79 1 69 1 29 2 32 1 67 1 %0 1 71 1 62 1 74 1 68 1 65 1 66 1 80 1 72 1 73 1 54 1 97 1 37 1 70 1 41 1 43 1 53 1 35 1 78 1 34 1 63 1 30 1 81 1 86 1 88 1 90 1 33 1 31 1 28 1 36 1 38 1 39 1 40 1 42 1 44 1 45 1 46 1 47 1 48 1 49 1 50 1 51 1 52 1 55 1 56 1 57 1 58 1 59 1 60 1 61 1 64 1 75 1 76 1 77 1 82 1 83 1 84 1 85 1 87 1 89 1 91 1 92 1 93 1 94 1 95 1 96 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 2 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 2 %0 1 %0 1 %0 1 %0 1 %0 2 %0 1 %0 1 %0 1 %0 1 %0 2 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 2 %0 2 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 2 %0 2 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 2 %0 2 %0 1 %0 1 %0 1 %0 1 %0 2 %0 1 %0 1 %0 2 %0 2 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 2 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 2 %0 2 %0 2 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 2 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 2 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 2 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 2 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 1 %0 2 %0 2 libpath/shortest.c:324: triangulation failed libpath/shortest.c:192: source point not in any triangle Error: in routesplines, Pshortestpath failed
Here is a proposed alternate module grouping:
Using the Chinese Whispers algorithm:
The core of software is calculated by recursively removing roots and leaves of the call graph; as such, it can be considered as the section where all the "real work" is done.
Visualises how far away from the exported root entities an entity is.
The overall cyclomatic complexity is: 774
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
These functions are those that are inaccessible:
Paths.TH.exceptToMaybe, Paths.TH.getPackageSourceRoot, Paths.TH.perhaps, Paths.TH.toShellVarName, Thentos.Action.addGroupToGroup, Thentos.Action.addPersona, Thentos.Action.addPersonaToGroup, Thentos.Action.deleteContext, Thentos.Action.deletePersona, Thentos.Action.dropServiceRegistration, Thentos.Action.findPersona, Thentos.Action.freshCaptchaId, Thentos.Action.freshRandom20, Thentos.Action.lookupConfirmedUserByEmail, Thentos.Action.lookupConfirmedUserByName, Thentos.Action.makeCaptcha, Thentos.Action.personaGroups, Thentos.Action.registerPersonaWithContext, Thentos.Action.removeGroupFromGroup, Thentos.Action.removePersonaFromGroup, Thentos.Action.solveCaptcha, Thentos.Action.startThentosSessionByUserEmail, Thentos.Action.unassignRole, Thentos.Action.unregisterPersonaFromContext, Thentos.Action.validateThentosUserSession, Thentos.Action.Core.fromActionState, Thentos.Action.Core.getCurrentTime'P, Thentos.Action.Core.logIfError'P, Thentos.Action.Core.renderTextTemplate'P, Thentos.Action.Core.runAction, Thentos.Action.Core.runActionAsAgent, Thentos.Action.Core.runActionAsAgentE, Thentos.Action.Core.runActionInThentosSession, Thentos.Action.Core.runActionInThentosSessionE, Thentos.Action.SimpleAuth.guardedUnsafeAction, Thentos.Action.Unsafe.genRandomBytes, Thentos.Action.Unsafe.getCurrentTime, Thentos.Action.Unsafe.hashServiceKey, Thentos.Action.Unsafe.hashUserPass, Thentos.Action.Unsafe.logIfError, Thentos.Action.Unsafe.makeUserFromFormData, Thentos.Action.Unsafe.query, Thentos.Backend.Api.Proxy.ProxyAdapter, Thentos.Backend.Api.Proxy.RqMod, Thentos.Backend.Api.Proxy.createCustomHeaders, Thentos.Backend.Api.Proxy.defaultProxyAdapter, Thentos.Backend.Api.Proxy.defaultRenderUser, Thentos.Backend.Api.Proxy.err500onExc, Thentos.Backend.Api.Proxy.findDefaultServiceIdAndTarget, Thentos.Backend.Api.Proxy.findTargetForServiceId, Thentos.Backend.Api.Proxy.getRqMod, Thentos.Backend.Api.Proxy.prepareReq, Thentos.Backend.Api.Proxy.renderError, Thentos.Backend.Api.Proxy.renderHeader, Thentos.Backend.Api.Proxy.renderUser, Thentos.Backend.Api.Proxy.reverseProxyHandler, Thentos.Backend.Api.Proxy.serviceProxy, Thentos.Backend.Core.CorsPolicy, Thentos.Backend.Core.addCorsHeaders, Thentos.Backend.Core.clearCustomHeaders, Thentos.Backend.Core.corsHeaders, Thentos.Backend.Core.corsMethods, Thentos.Backend.Core.corsOrigin, Thentos.Backend.Core.fromErrorMessage, Thentos.Backend.Core.loggerMW, Thentos.Backend.Core.lookupThentosHeaderService, Thentos.Config.extractTargetUrl, Thentos.Config.getBackendConfig, Thentos.Config.getFrontendConfig, Thentos.Config.printConfigUsage, Thentos.Frontend.Handlers.sendUserExistsMail, Thentos.Frontend.Handlers.Combinators.redirectURI, Thentos.Frontend.Pages.confirmationMailSentSnippet, Thentos.Frontend.Pages.errorPagelet, Thentos.Frontend.TH.loadStaticContent, Thentos.Sybil.Captcha.generateCaptcha, Thentos.Transaction.addGroupToGroup, Thentos.Transaction.addPersona, Thentos.Transaction.addPersonaToGroup, Thentos.Transaction.deleteContext, Thentos.Transaction.deletePersona, Thentos.Transaction.findContextId, Thentos.Transaction.findPersona, Thentos.Transaction.lookupConfirmedUserByEmail, Thentos.Transaction.personaGroups, Thentos.Transaction.registerPersonaWithContext, Thentos.Transaction.removeGroupFromGroup, Thentos.Transaction.removePersonaFromGroup, Thentos.Transaction.solveCaptcha, Thentos.Transaction.storeCaptcha, Thentos.Transaction.unassignRole, Thentos.Transaction.unregisterPersonaFromContext, Thentos.Transaction.unregisterUserFromService, Thentos.Types.ContextDescription, Thentos.Types.ContextId, Thentos.Types.ContextName, Thentos.Types.ImageData, Thentos.Types.PersonaId, Thentos.Types.PersonaName, Thentos.Types.Random20, Thentos.Types.RoleGroupAdmin, Thentos.Types.fromCaptchaId, Thentos.Types.fromContextDescription, Thentos.Types.fromContextId, Thentos.Types.fromContextName, Thentos.Types.fromGroup, Thentos.Types.fromImageData, Thentos.Types.fromPersonaId, Thentos.Types.fromPersonaName, Thentos.Types.fromRandom20, Thentos.Types.fromRelRef, Thentos.Types.fromServiceSessionToken, Thentos.Types.fromThentosSessionToken, Thentos.Types.fromUri, Thentos.Types.fromUserId, Thentos.Types.fromUserPass, Thentos.Types.ldName, Thentos.Types.ldPassword, Thentos.Types.mkRandom20, Thentos.Types.udPassword
The functions are split up into 22 components. You may wish to consider splitting the code up into multiple libraries.
The code has the following cross-module chains:
Thentos.Action.defaultSessionTimeout -> Thentos.Types.fromDays
Thentos.Action.SimpleAuth.assertAuth -> LIO.Missing.dcTop
Thentos.Backend.Api.Docs.Common.Class: MimeRender, Data: PlainText Docs.API -> Servant.API.Class: MimeRender
Thentos.Backend.Api.Proxy.Class: HasServer, Data: ServiceProxy -> Unknown Module.Class: HasServer
Thentos.Frontend.Types.Class: Accept, Data: PrettyHTML -> Unknown Module.Class: Accept
These chains can all be compressed down to a single function.
The cyclomatic complexity of the imports is: 84
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
These modules are those that are inaccessible:
Paths.TH, Thentos.Backend.Api.Docs.Proxy, Thentos.Backend.Api.Proxy
The imports have 2 components. You may wish to consider splitting the code up.
The imports have the following chains:
Thentos.Types -> Database.PostgreSQL.Simple.Missing
These chains can all be compressed down to a single module.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Database.PostgreSQL.Simple.Missing is: 5.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of LIO.Missing is: 4.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module LIO.Missing has 4 components. You may wish to consider splitting it up.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Paths.TH is: 2.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Paths.TH has the following chains:
perhaps -> exceptToMaybe
These chains can all be compressed down to a single function.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of System.Log.Missing is: 4.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module System.Log.Missing has 2 components. You may wish to consider splitting it up.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos is: 1.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Action is: 31.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Thentos.Action has 27 components. You may wish to consider splitting it up.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Action.Core is: 17.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Thentos.Action.Core has 8 components. You may wish to consider splitting it up.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Action.SimpleAuth is: 3.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Thentos.Action.SimpleAuth has 3 components. You may wish to consider splitting it up.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Action.Unsafe is: 9.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Thentos.Action.Unsafe has 9 components. You may wish to consider splitting it up.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Backend.Api.Auth is: 2.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Thentos.Backend.Api.Auth has 2 components. You may wish to consider splitting it up.
The core of a module is calculated by recursively removing roots and leaves of the call graph; as such, it can be considered as the section where all the "real work" is done.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Backend.Api.Docs.Common is: 27.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Thentos.Backend.Api.Docs.Common has 6 components. You may wish to consider splitting it up.
The module Thentos.Backend.Api.Docs.Common has the following chains:
Class: MimeRender, Data: PlainText Docs.API -> Class: MimeRender
prettyMimeRender' -> pprintAction
runTokenBuilder -> runTokenBuilderState
These chains can all be compressed down to a single function.
The core of a module is calculated by recursively removing roots and leaves of the call graph; as such, it can be considered as the section where all the "real work" is done.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Backend.Api.Docs.Proxy is: 3.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Thentos.Backend.Api.Docs.Proxy has 2 components. You may wish to consider splitting it up.
The module Thentos.Backend.Api.Docs.Proxy has the following chains:
Class: HasDocs, Data: (sublayout :<|> ServiceProxy) -> Class: HasDocs
These chains can all be compressed down to a single function.
The core of a module is calculated by recursively removing roots and leaves of the call graph; as such, it can be considered as the section where all the "real work" is done.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Backend.Api.Proxy is: 12.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Thentos.Backend.Api.Proxy has 2 components. You may wish to consider splitting it up.
The module Thentos.Backend.Api.Proxy has the following chains:
Class: HasServer, Data: ServiceProxy -> Class: HasServer
These chains can all be compressed down to a single function.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Backend.Api.Purescript is: 1.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Backend.Api.Simple is: 7.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Thentos.Backend.Api.Simple has 3 components. You may wish to consider splitting it up.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Backend.Core is: 15.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Thentos.Backend.Core has 8 components. You may wish to consider splitting it up.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Config is: 16.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Thentos.Config has 12 components. You may wish to consider splitting it up.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Frontend is: 1.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Thentos.Frontend has the following chains:
runFrontend -> frontendH
These chains can all be compressed down to a single function.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Frontend.Handlers is: 8.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
These functions are those that are inaccessible:
sendUserExistsMail
The module Thentos.Frontend.Handlers has 8 components. You may wish to consider splitting it up.
The module Thentos.Frontend.Handlers has the following chains:
userFinishLogin -> redirectToDashboardOrService
These chains can all be compressed down to a single function.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Frontend.Handlers.Combinators is: 7.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Thentos.Frontend.Handlers.Combinators has 7 components. You may wish to consider splitting it up.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Frontend.Pages is: 15.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Thentos.Frontend.Pages has 6 components. You may wish to consider splitting it up.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Frontend.State is: 4.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Thentos.Frontend.State has 3 components. You may wish to consider splitting it up.
The core of a module is calculated by recursively removing roots and leaves of the call graph; as such, it can be considered as the section where all the "real work" is done.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Frontend.Types is: 10.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Thentos.Frontend.Types has 8 components. You may wish to consider splitting it up.
The module Thentos.Frontend.Types has the following chains:
Class: Accept, Data: PrettyHTML -> Class: Accept
These chains can all be compressed down to a single function.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Smtp is: 1.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Transaction is: 28.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Thentos.Transaction has 25 components. You may wish to consider splitting it up.
The core of a module is calculated by recursively removing roots and leaves of the call graph; as such, it can be considered as the section where all the "real work" is done.
Visualises how far away from the exported root entities an entity is.
The cyclomatic complexity of Thentos.Types is: 73.
For more information on cyclomatic complexity, please see: Wikipedia: Cyclomatic Complexity
The module Thentos.Types has 29 components. You may wish to consider splitting it up.