cabal-version: 2.2 name: semantic version: 0.6.0 synopsis: Framework and executable for analyzing and diffing untrusted code. description: Semantic is a library for parsing, analyzing, and comparing source code across many languages. homepage: http://github.com/github/semantic#readme author: The Semantic authors maintainer: opensource+semantic@github.com license: MIT license-file: LICENSE copyright: (c) 2016-2019 GitHub, Inc. category: Web build-type: Simple stability: alpha tested-with: GHC == 8.6.4 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 -- Except in case of vendored dependencies, these deps should be expressed -- as caret-operator bounds relative to a version in Stackage. -- These are currently pinned to lts-13.13. common dependencies build-depends: base >= 4.12 && < 5 , aeson ^>= 1.4.2.0 , algebraic-graphs ^>= 0.3 , async ^>= 2.2.1 , bifunctors ^>= 5.5 , bytestring ^>= 0.10.8.2 , containers ^>= 0.6.0.1 , directory ^>= 1.3.3.0 , fastsum , filepath ^>= 1.4.2.1 , free ^>= 5.1 , fused-effects ^>= 0.4.0.0 , fused-effects-exceptions ^>= 0.1.1.0 , hashable ^>= 1.2.7.0 , tree-sitter ^>= 0.1.0.0 , machines ^>= 0.6.4 , mtl ^>= 2.2.2 , network ^>= 2.8.0.0 , process , recursion-schemes ^>= 5.1 , scientific ^>= 0.3.6.2 , safe-exceptions , semilattices , text ^>= 1.2.3.1 , these >= 0.7 && <1 , unix ^>= 2.7.2.2 , 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.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.Blob.IO , Data.Diff , Data.Duration , Data.Error , Data.Flag , Data.Functor.Both , Data.Functor.Classes.Generic , 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.Assignment , Language.Go.Syntax , Language.Go.Type , 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.Assignment , Language.JSON.PrettyPrint , Language.Ruby.Assignment , Language.Ruby.PrettyPrint , Language.Ruby.Syntax , Language.TSX.Assignment , Language.TSX.Syntax , Language.TSX.Syntax.JSX , Language.TypeScript.Assignment , Language.TypeScript.Resolution , Language.TypeScript.Syntax , Language.TypeScript.Syntax.Import , Language.TypeScript.Syntax.JavaScript , Language.TypeScript.Syntax.TypeScript , Language.TypeScript.Syntax.Types , Language.PHP.Assignment , Language.PHP.Syntax , Language.Python.Assignment , Language.Python.PrettyPrint , Language.Python.Syntax , Language.Java.Assignment , Language.Java.Syntax , Numeric.Exts -- Parser glue , Parsing.CMark , Parsing.Parser , Parsing.TreeSitter -- 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.Error , 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 autogen-modules: Paths_semantic other-modules: Paths_semantic build-depends: base >= 4.12 && < 5 , ansi-terminal ^>= 0.8.2 , array ^>= 0.5.3.0 , attoparsec ^>= 0.13.2.2 , cmark-gfm == 0.1.8 , cryptohash ^>= 0.11.9 , deepseq ^>= 1.4.4.0 , directory-tree ^>= 0.12.1 , generic-monoid ^>= 0.1.0.0 , ghc-prim ^>= 0.5.3 , gitrev ^>= 1.3.1 , haskeline ^>= 0.7.5.0 , hostname ^>= 1.0 , hscolour ^>= 1.24.4 , http-client ^>= 0.6.2 , http-client-tls ^>= 0.3.5.3 , http-types ^>= 0.12.3 , http-media ^>= 0.7.1.3 , kdt ^>= 0.2.4 , lens ^>= 4.17 , mersenne-random-pure64 ^>= 0.2.2.0 , network-uri ^>= 2.6.1.0 , optparse-applicative ^>= 0.14.3.0 , parallel ^>= 3.2.2.0 , parsers ^>= 0.12.9 , prettyprinter ^>= 1.2.1 , pretty-show ^>= 1.9.5 , profunctors ^>= 5.3 , reducers ^>= 3.12.3 , semigroupoids ^>= 5.3.2 , servant ^>= 0.15 , shelly >= 1.5 && <2 , split ^>= 0.2.3.3 , stm-chans ^>= 3.0.0.4 , template-haskell ^>= 2.14 , time ^>= 1.8.0.2 , unliftio-core , unordered-containers ^>= 0.2.9.0 , vector ^>= 0.12.0.2 , tree-sitter-go ^>= 0.1.0.0 , tree-sitter-haskell , tree-sitter-json ^>= 0.1.0.0 , tree-sitter-php ^>= 0.1.0.0 , tree-sitter-python ^>= 0.1.0.1 , tree-sitter-ruby ^>= 0.1.0.0 , tree-sitter-typescript ^>= 0.1.0.0 , tree-sitter-tsx ^>= 0.1.0.0 , tree-sitter-java ^>= 0.1.0.0 ghc-options: -Wall -Wmissing-export-lists -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -fno-warn-name-shadowing if flag(release) cpp-options: -DCOMPUTE_GIT_SHA else ghc-options: +RTS -A128m -n2m -RTS executable semantic import: haskell, dependencies, executable-flags hs-source-dirs: app main-is: Main.hs if flag(release) cpp-options: -DCOMPUTE_GIT_SHA 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.6 && <3 , hspec-core >= 2.6 && <3 , hspec-expectations-pretty-diff ^>= 0.7.2.5 , HUnit ^>= 1.6.0.0 , leancheck >= 0.8 && <1 , temporary if flag(release) ghc-options: -dynamic test-suite parse-examples import: haskell, dependencies, executable-flags 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 benchmark evaluation import: haskell, executable-flags hs-source-dirs: bench/evaluation type: exitcode-stdio-1.0 main-is: Main.hs ghc-options: -static build-depends: base , criterion , semantic source-repository head type: git location: https://github.com/github/semantic