cabal-version: 2.2 name: semantic version: 0.6.0 synopsis: Framework and service for analyzing and diffing untrusted code. description: Please see README.md homepage: http://github.com/github/semantic#readme author: Rob Rix, Josh Vera maintainer: rob.rix@github.com copyright: (c) 2016-2019 GitHub, Inc. category: Web build-type: Simple stability: alpha flag release description: Build with optimizations on (for CI or deployment builds) default: False -- GHC extensions shared between targets common haskell default-language: Haskell2010 default-extensions: DataKinds , DeriveFoldable , DeriveFunctor , DeriveGeneric , DeriveTraversable , FlexibleContexts , FlexibleInstances , MonadFailDesugaring , MultiParamTypeClasses , OverloadedStrings , RecordWildCards , StandaloneDeriving , StrictData , TypeApplications common dependencies build-depends: base >= 4.8 && < 5 , aeson , algebraic-graphs , async , bifunctors , bytestring , containers , directory , fastsum , filepath , free , fused-effects , hashable , haskell-tree-sitter , machines , mtl , network , recursion-schemes , scientific , safe-exceptions , semilattices , text , these , proto3-suite , proto3-wire common executable-flags ghc-options: -threaded -rtsopts "-with-rtsopts=-N -A4m -n2m" library import: haskell, dependencies hs-source-dirs: src exposed-modules: -- Analyses & term annotations Analysis.Abstract.Caching.FlowInsensitive , Analysis.Abstract.Caching.FlowSensitive , Analysis.Abstract.Collecting , Analysis.Abstract.Dead , Analysis.Abstract.Graph , Analysis.Abstract.Tracing , Analysis.ConstructorName , Analysis.CyclomaticComplexity , Analysis.TOCSummary , Analysis.Decorator , Analysis.HasTextElement , Analysis.PackageDef -- Semantic assignment , Assigning.Assignment , Assigning.Assignment.Deterministic , Assigning.Assignment.Table -- Control structures & interfaces for abstract interpretation , Control.Abstract , Control.Abstract.Context , Control.Abstract.Evaluator , Control.Abstract.Heap , Control.Abstract.Hole , Control.Abstract.Modules , Control.Abstract.Primitive , Control.Abstract.PythonPackage , Control.Abstract.Roots , Control.Abstract.ScopeGraph , Control.Abstract.Value -- Effects , Control.Effect.Interpose , Control.Effect.REPL , Control.Rewriting -- Datatypes for abstract interpretation , Data.Abstract.Address.Hole , Data.Abstract.Address.Monovariant , Data.Abstract.Address.Precise , Data.Abstract.BaseError , Data.Abstract.Declarations , Data.Abstract.Evaluatable , Data.Abstract.FreeVariables , Data.Abstract.AccessControls.Class , Data.Abstract.AccessControls.Instances , Data.Abstract.HasSpan , Data.Abstract.Heap , Data.Abstract.Live , Data.Abstract.Module , Data.Abstract.ModuleTable , Data.Abstract.Name , Data.Abstract.Number , Data.Abstract.Package , Data.Abstract.Path , Data.Abstract.ScopeGraph , Data.Abstract.Value.Abstract , Data.Abstract.Value.Concrete , Data.Abstract.Value.Type -- General datatype definitions & generic algorithms , Data.Algebra , Data.AST , Data.Blob , Data.Diff , Data.Duration , Data.Error , Data.File , Data.Flag , Data.Functor.Both , Data.Functor.Classes.Generic , Proto3.Google.Timestamp , Data.Graph , Data.Graph.ControlFlowVertex , Data.Handle , Data.History , Data.ImportPath , Data.JSON.Fields , Data.Language , Data.Location , Data.Map.Monoidal , Data.Patch , Data.Project , Data.Quieterm , Data.Range , Data.Reprinting.Errors , Data.Reprinting.Fragment , Data.Reprinting.Operator , Data.Reprinting.Scope , Data.Reprinting.Splice , Data.Reprinting.Token , Data.Semigroup.App , Data.Scientific.Exts , Data.Source , Data.Span -- À la carte syntax types , Data.Syntax , Data.Syntax.Comment , Data.Syntax.Declaration , Data.Syntax.Directive , Data.Syntax.Expression , Data.Syntax.Literal , Data.Syntax.Statement , Data.Syntax.Type , Data.Tag , Data.Term -- Diffing algorithms & interpretation thereof , Diffing.Algorithm , Diffing.Algorithm.RWS , Diffing.Algorithm.RWS.FeatureVector , Diffing.Algorithm.SES , Diffing.Interpreter -- Language-specific grammar/syntax types, & assignments , Language.Markdown.Assignment , Language.Markdown.Syntax , Language.Go.Grammar , Language.Go.Assignment , Language.Go.Syntax , Language.Go.Type , Language.Haskell.Grammar , Language.Haskell.Assignment , Language.Haskell.Syntax , Language.Haskell.Syntax.Constructor , Language.Haskell.Syntax.Haskell , Language.Haskell.Syntax.Identifier , Language.Haskell.Syntax.Pattern , Language.Haskell.Syntax.QuasiQuote , Language.Haskell.Syntax.Type , Language.JSON.Grammar , Language.JSON.Assignment , Language.JSON.PrettyPrint , Language.MiniRuby.Assignment , Language.MiniPython.Assignment , Language.Ruby.Grammar , Language.Ruby.Assignment , Language.Ruby.PrettyPrint , Language.Ruby.Syntax , Language.TypeScript.Assignment , Language.TypeScript.Grammar , Language.TypeScript.Resolution , Language.TypeScript.Syntax , Language.TypeScript.Syntax.Import , Language.TypeScript.Syntax.JavaScript , Language.TypeScript.Syntax.JSX , Language.TypeScript.Syntax.TypeScript , Language.TypeScript.Syntax.Types , Language.PHP.Assignment , Language.PHP.Grammar , Language.PHP.Syntax , Language.Python.Assignment , Language.Python.Grammar , Language.Python.PrettyPrint , Language.Python.Syntax , Language.Java.Assignment , Language.Java.Grammar , Language.Java.Syntax , Numeric.Exts -- Parser glue , Parsing.CMark , Parsing.Parser , Parsing.TreeSitter , Paths_semantic , Proto3.Google.Wrapped -- Rendering formats , Rendering.Graph , Rendering.JSON , Rendering.TOC , Reprinting.Tokenize , Reprinting.Translate , Reprinting.Typeset , Reprinting.Pipeline -- High-level flow & operational functionality (logging, stats, etc.) , Semantic.Analysis -- API , Semantic.Api , Semantic.Api.Bridge , Semantic.Api.Diffs , Semantic.Api.LegacyTypes , Semantic.Api.Symbols , Semantic.Api.Terms , Semantic.Api.TOCSummaries , Semantic.Api.V1.CodeAnalysisPB , Semantic.AST , Semantic.CLI , Semantic.Config , Semantic.Distribute , Semantic.Env , Semantic.Git , Semantic.Graph , Semantic.IO , Semantic.REPL , Semantic.Resolution , Semantic.Task , Semantic.Task.Files , Semantic.Telemetry , Semantic.Telemetry.AsyncQueue , Semantic.Telemetry.Haystack , Semantic.Telemetry.Log , Semantic.Telemetry.Stat , Semantic.Timeout , Semantic.Util , Semantic.Util.Pretty , Semantic.Version -- Serialization , Serializing.Format , Serializing.SExpression , Tags.Taggable , Tags.Tagging -- Custom Prelude , Prologue build-depends: base >= 4.8 && < 5 , ansi-terminal , array , attoparsec , cmark-gfm , cryptohash , deepseq , directory-tree , freer-cofreer , generic-monoid , ghc-prim , gitrev , haskeline , hostname , hscolour , http-client , http-client-tls , http-types , http-media , kdt , lens , mersenne-random-pure64 , network-uri , optparse-applicative , parallel , parsers , pretty-show , prettyprinter , profunctors , reducers , semigroupoids , servant , shelly , split , stm-chans , template-haskell , time , unix , unordered-containers , vector , haskell-tree-sitter , tree-sitter-go , tree-sitter-haskell , tree-sitter-json , tree-sitter-php , tree-sitter-python , tree-sitter-ruby , tree-sitter-typescript , tree-sitter-java ghc-options: -Wall -Wmissing-export-lists -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -fno-warn-name-shadowing -j if flag(release) ghc-options: -Werror -O1 cpp-options: -DCOMPUTE_GIT_SHA else ghc-options: -O0 +RTS -A128m -n2m -RTS ghc-prof-options: -fprof-auto executable semantic import: haskell, dependencies, executable-flags hs-source-dirs: app main-is: Main.hs if flag(release) ghc-options: -O1 cpp-options: -DCOMPUTE_GIT_SHA else ghc-options: -O0 -dynamic build-depends: base , semantic test-suite test import: haskell, dependencies, executable-flags type: exitcode-stdio-1.0 hs-source-dirs: test main-is: Spec.hs other-modules: Analysis.Go.Spec , Analysis.PHP.Spec , Analysis.Python.Spec , Analysis.Ruby.Spec , Analysis.TypeScript.Spec , Assigning.Assignment.Spec , Control.Abstract.Evaluator.Spec , Data.Abstract.Path.Spec , Data.Abstract.Name.Spec , Data.Diff.Spec , Data.Functor.Classes.Generic.Spec , Data.Functor.Listable , Data.Graph.Spec , Data.Mergeable , Data.Range.Spec , Data.Scientific.Spec , Data.Semigroup.App.Spec , Data.Source.Spec , Data.Term.Spec , Diffing.Algorithm.RWS.Spec , Diffing.Algorithm.SES.Spec , Diffing.Interpreter.Spec , Graphing.Calls.Spec , Integration.Spec , Numeric.Spec , Parsing.Spec , Reprinting.Spec , Rewriting.Go.Spec , Rewriting.JSON.Spec , Rewriting.Python.Spec , Rendering.TOC.Spec , Semantic.Spec , Semantic.CLI.Spec , Semantic.IO.Spec , Semantic.Stat.Spec , Tags.Spec , SpecHelpers , Test.Hspec.LeanCheck build-depends: semantic , tree-sitter-json , Glob , hspec >= 2.4.1 , hspec-core , hspec-expectations-pretty-diff , HUnit , leancheck ghc-options: -O0 if flag(release) ghc-options: -dynamic test-suite parse-examples import: haskell, dependencies type: exitcode-stdio-1.0 hs-source-dirs: test main-is: Examples.hs build-depends: semantic , Glob , hspec >= 2.4.1 , hspec-core , hspec-expectations-pretty-diff , process benchmark evaluation import: haskell, executable-flags hs-source-dirs: bench/evaluation type: exitcode-stdio-1.0 main-is: Main.hs ghc-options: -static -O1 build-depends: base , criterion , semantic source-repository head type: git location: https://github.com/github/semantic