mirror of
https://github.com/github/semantic.git
synced 2024-12-22 22:31:36 +03:00
432 lines
18 KiB
Plaintext
432 lines
18 KiB
Plaintext
cabal-version: 2.4
|
|
|
|
name: semantic
|
|
version: 0.7.0.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
|
|
bug-reports: https://github.com/github/semantic/issues
|
|
license: MIT
|
|
license-file: LICENSE
|
|
author: The Semantic authors
|
|
maintainer: opensource+semantic@github.com
|
|
copyright: (c) 2015-2019 GitHub, Inc.
|
|
category: Language
|
|
build-type: Simple
|
|
stability: alpha
|
|
extra-source-files: README.md
|
|
|
|
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 ^>= 0.1.1.0
|
|
, filepath ^>= 1.4.2.1
|
|
, free ^>= 5.1
|
|
, fused-effects ^>= 0.5.0.0
|
|
, fused-effects-exceptions ^>= 0.2.0.0
|
|
, hashable ^>= 1.2.7.0
|
|
, tree-sitter == 0.3.0.0
|
|
, mtl ^>= 2.2.2
|
|
, network ^>= 2.8.0.0
|
|
, process ^>= 1.6.3.0
|
|
, recursion-schemes ^>= 5.1
|
|
, scientific ^>= 0.3.6.2
|
|
, safe-exceptions ^>= 0.1.7.0
|
|
, semilattices ^>= 0.0.0.3
|
|
, shelly >= 1.5 && <2
|
|
, streaming ^>= 0.2.2.0
|
|
, text ^>= 1.2.3.1
|
|
, these >= 0.7 && <1
|
|
, unix ^>= 2.7.2.2
|
|
, proto3-suite
|
|
, proto3-wire
|
|
, lingo >= 0.1.0.1
|
|
|
|
common executable-flags
|
|
ghc-options: -threaded -rtsopts "-with-rtsopts=-N -A4m -n2m"
|
|
|
|
common ghc-warnings
|
|
ghc-options: -Wall -Wmissing-export-lists -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints -Wno-name-shadowing
|
|
|
|
library
|
|
import: haskell, dependencies, ghc-warnings
|
|
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.Proto.SemanticPB
|
|
, 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
|
|
, Serializing.SExpression.Precise
|
|
, 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 && <1
|
|
, 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
|
|
, split ^>= 0.2.3.3
|
|
, stm-chans ^>= 3.0.0.4
|
|
, template-haskell ^>= 2.14
|
|
, time ^>= 1.8.0.2
|
|
, unliftio-core ^>= 0.1.2.0
|
|
, unordered-containers ^>= 0.2.9.0
|
|
, vector ^>= 0.12.0.2
|
|
, tree-sitter-go == 0.2.0.0
|
|
, tree-sitter-haskell == 0.2.0.0
|
|
, tree-sitter-json == 0.2.0.0
|
|
, tree-sitter-php == 0.2.0.0
|
|
, tree-sitter-python == 0.4.0.0
|
|
, tree-sitter-ruby == 0.2.0.0
|
|
, tree-sitter-typescript == 0.2.0.0
|
|
, tree-sitter-tsx == 0.2.0.0
|
|
, tree-sitter-java == 0.2.0.0
|
|
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, ghc-warnings
|
|
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.Language.Spec
|
|
, 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
|
|
, Generators
|
|
build-depends: semantic
|
|
, tree-sitter-json
|
|
, Glob ^>= 0.10.0
|
|
, hedgehog ^>= 1
|
|
, hspec >= 2.6 && <3
|
|
, hspec-core >= 2.6 && <3
|
|
, hspec-expectations ^>= 0.8.2
|
|
, tasty ^>= 1.2.3
|
|
, tasty-golden ^>= 2.3.2
|
|
, tasty-hedgehog ^>= 1.0.0.1
|
|
, tasty-hspec ^>= 1.1.5.1
|
|
, tasty-hunit ^>= 0.10.0.2
|
|
, HUnit ^>= 1.6.0.0
|
|
, leancheck >= 0.8 && <1
|
|
, temporary ^>= 1.3
|
|
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
|
|
, hspec-core
|
|
, hspec-expectations
|
|
|
|
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 ^>= 1.5
|
|
, semantic
|
|
|
|
source-repository head
|
|
type: git
|
|
location: https://github.com/github/semantic
|