1
1
mirror of https://github.com/github/semantic.git synced 2024-12-24 07:25:44 +03:00
semantic/semantic.cabal

419 lines
16 KiB
Plaintext

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
, Glob
, hashable
, haskell-tree-sitter
, machines
, mtl
, network
, recursion-schemes
, scientific
, 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.Catch
, 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.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.Diffs
, Semantic.Api.Helpers
, 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.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
, prettyprinter
, pretty-show
, profunctors
, reducers
, semigroupoids
, servant
, 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
, 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
, 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
, 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