packages feed

sarif 0.1 → 0.2

raw patch · 58 files changed

+3754/−435 lines, 58 filesdep +timePVP ok

version bump matches the API change (PVP)

Dependencies added: time

API changes (from Hackage documentation)

- Data.Aeson.Optional: json :: Parser Value
- Data.Aeson.Optional: json' :: Parser Value
- Data.SARIF.Level: Error :: Level
- Data.SARIF.Level: None :: Level
- Data.SARIF.Level: Note :: Level
- Data.SARIF.Level: Warning :: Level
- Data.SARIF.Location: MkArtifactLocation :: Text -> ArtifactLocation
- Data.SARIF.Location: MkPhysicalLocation :: ArtifactLocation -> Region -> PhysicalLocation
- Data.SARIF.Location: MkRegion :: Int -> Int -> Int -> Int -> Region
- Data.SARIF.Location: [artifactLocationUri] :: ArtifactLocation -> Text
- Data.SARIF.Location: [physicalLocationArtifactLocation] :: PhysicalLocation -> ArtifactLocation
- Data.SARIF.Location: [physicalLocationRegion] :: PhysicalLocation -> Region
- Data.SARIF.Location: [regionEndColumn] :: Region -> Int
- Data.SARIF.Location: [regionEndLine] :: Region -> Int
- Data.SARIF.Location: [regionStartColumn] :: Region -> Int
- Data.SARIF.Location: [regionStartLine] :: Region -> Int
- Data.SARIF.Location: data PhysicalLocation
- Data.SARIF.Location: data Region
- Data.SARIF.Location: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Location.ArtifactLocation
- Data.SARIF.Location: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Location.PhysicalLocation
- Data.SARIF.Location: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Location.Region
- Data.SARIF.Location: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Location.ArtifactLocation
- Data.SARIF.Location: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Location.PhysicalLocation
- Data.SARIF.Location: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Location.Region
- Data.SARIF.Location: instance GHC.Classes.Eq Data.SARIF.Location.ArtifactLocation
- Data.SARIF.Location: instance GHC.Classes.Eq Data.SARIF.Location.PhysicalLocation
- Data.SARIF.Location: instance GHC.Classes.Eq Data.SARIF.Location.Region
- Data.SARIF.Location: instance GHC.Show.Show Data.SARIF.Location.ArtifactLocation
- Data.SARIF.Location: instance GHC.Show.Show Data.SARIF.Location.PhysicalLocation
- Data.SARIF.Location: instance GHC.Show.Show Data.SARIF.Location.Region
- Data.SARIF.Location: newtype ArtifactLocation
- Data.SARIF.Location: newtype Location
- Data.SARIF.Log: defaultLog :: Log
- Data.SARIF.MultiformatMessageString: defaultMultiformatMessageString :: Text -> MultiformatMessageString
- Data.SARIF.ReportingDescriptor: MkReportingConfiguration :: Maybe Level -> ReportingConfiguration
- Data.SARIF.ReportingDescriptor: [rcLevel] :: ReportingConfiguration -> Maybe Level
- Data.SARIF.ReportingDescriptor: [rdDefaultConfiguration] :: ReportingDescriptor -> Maybe ReportingConfiguration
- Data.SARIF.ReportingDescriptor: [rdFullDescription] :: ReportingDescriptor -> Maybe MultiformatMessageString
- Data.SARIF.ReportingDescriptor: [rdHelpUri] :: ReportingDescriptor -> Maybe Text
- Data.SARIF.ReportingDescriptor: [rdHelp] :: ReportingDescriptor -> Maybe MultiformatMessageString
- Data.SARIF.ReportingDescriptor: [rdId] :: ReportingDescriptor -> Text
- Data.SARIF.ReportingDescriptor: [rdName] :: ReportingDescriptor -> Maybe Text
- Data.SARIF.ReportingDescriptor: [rdProperties] :: ReportingDescriptor -> Map Text Value
- Data.SARIF.ReportingDescriptor: [rdShortDescription] :: ReportingDescriptor -> Maybe MultiformatMessageString
- Data.SARIF.ReportingDescriptor: defaultReportingConfiguration :: ReportingConfiguration
- Data.SARIF.ReportingDescriptor: defaultReportingDescriptor :: Text -> ReportingDescriptor
- Data.SARIF.ReportingDescriptor: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.ReportingDescriptor.ReportingConfiguration
- Data.SARIF.ReportingDescriptor: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.ReportingDescriptor.ReportingConfiguration
- Data.SARIF.ReportingDescriptor: instance GHC.Classes.Eq Data.SARIF.ReportingDescriptor.ReportingConfiguration
- Data.SARIF.ReportingDescriptor: instance GHC.Show.Show Data.SARIF.ReportingDescriptor.ReportingConfiguration
- Data.SARIF.ReportingDescriptor: newtype ReportingConfiguration
- Data.SARIF.Result: Error :: Level
- Data.SARIF.Result: None :: Level
- Data.SARIF.Result: Note :: Level
- Data.SARIF.Result: Warning :: Level
- Data.SARIF.Result: data Level
- Data.SARIF.Tool: MkToolComponent :: Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe UUID -> Maybe Text -> [ReportingDescriptor] -> ToolComponent
- Data.SARIF.Tool: [toolComponentFullName] :: ToolComponent -> Maybe Text
- Data.SARIF.Tool: [toolComponentGUID] :: ToolComponent -> Maybe UUID
- Data.SARIF.Tool: [toolComponentInformationUri] :: ToolComponent -> Maybe Text
- Data.SARIF.Tool: [toolComponentName] :: ToolComponent -> Maybe Text
- Data.SARIF.Tool: [toolComponentRules] :: ToolComponent -> [ReportingDescriptor]
- Data.SARIF.Tool: [toolComponentSemanticVersion] :: ToolComponent -> Maybe Text
- Data.SARIF.Tool: [toolComponentVersion] :: ToolComponent -> Maybe Text
- Data.SARIF.Tool: data ToolComponent
- Data.SARIF.Tool: defaultToolComponent :: ToolComponent
- Data.SARIF.Tool: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Tool.ToolComponent
- Data.SARIF.Tool: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Tool.ToolComponent
- Data.SARIF.Tool: instance GHC.Classes.Eq Data.SARIF.Tool.ToolComponent
- Data.SARIF.Tool: instance GHC.Generics.Generic Data.SARIF.Tool.Tool
- Data.SARIF.Tool: instance GHC.Generics.Generic Data.SARIF.Tool.ToolComponent
- Data.SARIF.Tool: instance GHC.Show.Show Data.SARIF.Tool.ToolComponent
+ Data.Aeson.Optional: ($dmfromJSONKey) :: (FromJSONKey a, FromJSON a) => FromJSONKeyFunction a
+ Data.Aeson.Optional: ($dmfromJSONKeyList) :: (FromJSONKey a, FromJSON a) => FromJSONKeyFunction [a]
+ Data.Aeson.Optional: ($dmliftParseJSON) :: (FromJSON1 f, Generic1 f, GFromJSON One (Rep1 f)) => Maybe a -> (Value -> Parser a) -> (Value -> Parser [a]) -> Value -> Parser (f a)
+ Data.Aeson.Optional: ($dmliftToEncoding) :: (ToJSON1 f, Generic1 f, GToJSON' Encoding One (Rep1 f)) => (a -> Bool) -> (a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
+ Data.Aeson.Optional: ($dmliftToJSON) :: (ToJSON1 f, Generic1 f, GToJSON' Value One (Rep1 f)) => (a -> Bool) -> (a -> Value) -> ([a] -> Value) -> f a -> Value
+ Data.Aeson.Optional: ($dmparseJSON) :: (FromJSON a, Generic a, GFromJSON Zero (Rep a)) => Value -> Parser a
+ Data.Aeson.Optional: ($dmtoJSON) :: (ToJSON a, Generic a, GToJSON' Value Zero (Rep a)) => a -> Value
+ Data.Aeson.Optional: ($dmtoJSONKey) :: (ToJSONKey a, ToJSON a) => ToJSONKeyFunction a
+ Data.Aeson.Optional: ($dmtoJSONKeyList) :: (ToJSONKey a, ToJSON a) => ToJSONKeyFunction [a]
+ Data.Aeson.Optional: (.:!=) :: FromJSON a => Object -> Key -> Parser a
+ Data.Aeson.Optional: (.:?=) :: FromJSON a => Object -> Key -> Parser a
+ Data.Aeson.Optional: (.?=) :: (KeyValueOmit e kv, ToJSON v) => Key -> v -> kv
+ Data.Aeson.Optional: AesonException :: String -> AesonException
+ Data.Aeson.Optional: class KeyValue e kv => KeyValueOmit e kv | kv -> e
+ Data.Aeson.Optional: decodeStrictText :: FromJSON a => Text -> Maybe a
+ Data.Aeson.Optional: eitherDecodeStrictText :: FromJSON a => Text -> Either String a
+ Data.Aeson.Optional: explicitToField :: KeyValue e kv => (v -> e) -> Key -> v -> kv
+ Data.Aeson.Optional: explicitToFieldOmit :: KeyValueOmit e kv => (v -> Bool) -> (v -> e) -> Key -> v -> kv
+ Data.Aeson.Optional: liftOmitField :: ToJSON1 f => (a -> Bool) -> f a -> Bool
+ Data.Aeson.Optional: liftOmitField2 :: ToJSON2 f => (a -> Bool) -> (b -> Bool) -> f a b -> Bool
+ Data.Aeson.Optional: liftOmittedField :: FromJSON1 f => Maybe a -> Maybe (f a)
+ Data.Aeson.Optional: liftOmittedField2 :: FromJSON2 f => Maybe a -> Maybe b -> Maybe (f a b)
+ Data.Aeson.Optional: newtype AesonException
+ Data.Aeson.Optional: omitField :: ToJSON a => a -> Bool
+ Data.Aeson.Optional: omitField1 :: (ToJSON1 f, ToJSON a) => f a -> Bool
+ Data.Aeson.Optional: omitField2 :: (ToJSON2 f, ToJSON a, ToJSON b) => f a b -> Bool
+ Data.Aeson.Optional: omittedField :: FromJSON a => Maybe a
+ Data.Aeson.Optional: omittedField1 :: (FromJSON1 f, FromJSON a) => Maybe (f a)
+ Data.Aeson.Optional: omittedField2 :: (FromJSON2 f, FromJSON a, FromJSON b) => Maybe (f a b)
+ Data.Aeson.Optional: throwDecode :: (FromJSON a, MonadThrow m) => ByteString -> m a
+ Data.Aeson.Optional: throwDecode' :: (FromJSON a, MonadThrow m) => ByteString -> m a
+ Data.Aeson.Optional: throwDecodeStrict :: (FromJSON a, MonadThrow m) => ByteString -> m a
+ Data.Aeson.Optional: throwDecodeStrict' :: (FromJSON a, MonadThrow m) => ByteString -> m a
+ Data.Aeson.Optional: throwDecodeStrictText :: (FromJSON a, MonadThrow m) => Text -> m a
+ Data.SARIF.Address: MkAddress :: Maybe Int -> Maybe Integer -> Maybe Integer -> Maybe Integer -> Maybe Integer -> Maybe Text -> Maybe Text -> Maybe AddressKind -> Maybe Int -> Maybe (Map Text Value) -> Address
+ Data.SARIF.Address: [addressAbsoluteAddress] :: Address -> Maybe Integer
+ Data.SARIF.Address: [addressFullyQualifiedName] :: Address -> Maybe Text
+ Data.SARIF.Address: [addressIndex] :: Address -> Maybe Int
+ Data.SARIF.Address: [addressKind] :: Address -> Maybe AddressKind
+ Data.SARIF.Address: [addressLength] :: Address -> Maybe Integer
+ Data.SARIF.Address: [addressName] :: Address -> Maybe Text
+ Data.SARIF.Address: [addressOffsetFromParent] :: Address -> Maybe Integer
+ Data.SARIF.Address: [addressParentIndex] :: Address -> Maybe Int
+ Data.SARIF.Address: [addressProperties] :: Address -> Maybe (Map Text Value)
+ Data.SARIF.Address: [addressRelativeAddress] :: Address -> Maybe Integer
+ Data.SARIF.Address: data Address
+ Data.SARIF.Address: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Address.Address
+ Data.SARIF.Address: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Address.AddressKind
+ Data.SARIF.Address: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Address.Address
+ Data.SARIF.Address: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Address.AddressKind
+ Data.SARIF.Address: instance GHC.Classes.Eq Data.SARIF.Address.Address
+ Data.SARIF.Address: instance GHC.Classes.Eq Data.SARIF.Address.AddressKind
+ Data.SARIF.Address: instance GHC.Classes.Ord Data.SARIF.Address.Address
+ Data.SARIF.Address: instance GHC.Classes.Ord Data.SARIF.Address.AddressKind
+ Data.SARIF.Address: instance GHC.Show.Show Data.SARIF.Address.Address
+ Data.SARIF.Address: instance GHC.Show.Show Data.SARIF.Address.AddressKind
+ Data.SARIF.Artifact: [artifactContents] :: Artifact -> Maybe ArtifactContent
+ Data.SARIF.Artifact: [artifactDescription] :: Artifact -> Maybe Message
+ Data.SARIF.Artifact: [artifactEncoding] :: Artifact -> Maybe Text
+ Data.SARIF.Artifact: [artifactHashes] :: Artifact -> Maybe [(Text, Text)]
+ Data.SARIF.Artifact: [artifactLastModifiedTimeUtc] :: Artifact -> Maybe Text
+ Data.SARIF.Artifact: [artifactLength] :: Artifact -> Maybe Int
+ Data.SARIF.Artifact: [artifactOffset] :: Artifact -> Maybe Int
+ Data.SARIF.Artifact: [artifactParentIndex] :: Artifact -> Maybe Int
+ Data.SARIF.Artifact: [artifactProperties] :: Artifact -> Maybe (Map Text Value)
+ Data.SARIF.Artifact: [artifactRoles] :: Artifact -> Maybe [ArtifactRole]
+ Data.SARIF.Artifact: [artifactSourceLanguage] :: Artifact -> Maybe Text
+ Data.SARIF.Artifact: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Artifact.ArtifactRole
+ Data.SARIF.Artifact: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Artifact.ArtifactRole
+ Data.SARIF.Artifact: instance GHC.Classes.Eq Data.SARIF.Artifact.ArtifactRole
+ Data.SARIF.Artifact: instance GHC.Classes.Ord Data.SARIF.Artifact.Artifact
+ Data.SARIF.Artifact: instance GHC.Classes.Ord Data.SARIF.Artifact.ArtifactRole
+ Data.SARIF.Artifact: instance GHC.Show.Show Data.SARIF.Artifact.ArtifactRole
+ Data.SARIF.ArtifactChange: MkArtifactChange :: ArtifactLocation -> [Replacement] -> Maybe (Map Text Value) -> ArtifactChange
+ Data.SARIF.ArtifactChange: [artifactChangeArtifactLocation] :: ArtifactChange -> ArtifactLocation
+ Data.SARIF.ArtifactChange: [artifactChangeProperties] :: ArtifactChange -> Maybe (Map Text Value)
+ Data.SARIF.ArtifactChange: [artifactChangeReplacementArtifacts] :: ArtifactChange -> [Replacement]
+ Data.SARIF.ArtifactChange: data ArtifactChange
+ Data.SARIF.ArtifactChange: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.ArtifactChange.ArtifactChange
+ Data.SARIF.ArtifactChange: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.ArtifactChange.ArtifactChange
+ Data.SARIF.ArtifactChange: instance GHC.Classes.Eq Data.SARIF.ArtifactChange.ArtifactChange
+ Data.SARIF.ArtifactChange: instance GHC.Classes.Ord Data.SARIF.ArtifactChange.ArtifactChange
+ Data.SARIF.ArtifactChange: instance GHC.Show.Show Data.SARIF.ArtifactChange.ArtifactChange
+ Data.SARIF.ArtifactContent: MkArtifactContent :: Maybe Text -> Maybe Text -> Maybe MultiformatMessageString -> Maybe (Map Text Value) -> ArtifactContent
+ Data.SARIF.ArtifactContent: [artifactContentBinary] :: ArtifactContent -> Maybe Text
+ Data.SARIF.ArtifactContent: [artifactContentProperties] :: ArtifactContent -> Maybe (Map Text Value)
+ Data.SARIF.ArtifactContent: [artifactContentRendered] :: ArtifactContent -> Maybe MultiformatMessageString
+ Data.SARIF.ArtifactContent: [artifactContentText] :: ArtifactContent -> Maybe Text
+ Data.SARIF.ArtifactContent: data ArtifactContent
+ Data.SARIF.ArtifactContent: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.ArtifactContent.ArtifactContent
+ Data.SARIF.ArtifactContent: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.ArtifactContent.ArtifactContent
+ Data.SARIF.ArtifactContent: instance GHC.Classes.Eq Data.SARIF.ArtifactContent.ArtifactContent
+ Data.SARIF.ArtifactContent: instance GHC.Classes.Ord Data.SARIF.ArtifactContent.ArtifactContent
+ Data.SARIF.ArtifactContent: instance GHC.Show.Show Data.SARIF.ArtifactContent.ArtifactContent
+ Data.SARIF.ArtifactLocation: MkArtifactLocation :: Maybe Text -> Maybe Text -> Maybe Int -> Maybe Message -> Maybe (Map Text Value) -> ArtifactLocation
+ Data.SARIF.ArtifactLocation: [artifactLocDescription] :: ArtifactLocation -> Maybe Message
+ Data.SARIF.ArtifactLocation: [artifactLocIndex] :: ArtifactLocation -> Maybe Int
+ Data.SARIF.ArtifactLocation: [artifactLocProperties] :: ArtifactLocation -> Maybe (Map Text Value)
+ Data.SARIF.ArtifactLocation: [artifactLocUriBaseId] :: ArtifactLocation -> Maybe Text
+ Data.SARIF.ArtifactLocation: [artifactLocUri] :: ArtifactLocation -> Maybe Text
+ Data.SARIF.ArtifactLocation: data ArtifactLocation
+ Data.SARIF.ArtifactLocation: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.ArtifactLocation.ArtifactLocation
+ Data.SARIF.ArtifactLocation: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.ArtifactLocation.ArtifactLocation
+ Data.SARIF.ArtifactLocation: instance GHC.Classes.Eq Data.SARIF.ArtifactLocation.ArtifactLocation
+ Data.SARIF.ArtifactLocation: instance GHC.Classes.Ord Data.SARIF.ArtifactLocation.ArtifactLocation
+ Data.SARIF.ArtifactLocation: instance GHC.Show.Show Data.SARIF.ArtifactLocation.ArtifactLocation
+ Data.SARIF.Attachment: MkAttachment :: Maybe Message -> Maybe Location -> Maybe [Region] -> Maybe [Rectangle] -> Maybe (Map Text Value) -> Attachment
+ Data.SARIF.Attachment: [attachmentDescription] :: Attachment -> Maybe Message
+ Data.SARIF.Attachment: [attachmentLocation] :: Attachment -> Maybe Location
+ Data.SARIF.Attachment: [attachmentProperties] :: Attachment -> Maybe (Map Text Value)
+ Data.SARIF.Attachment: [attachmentRectangle] :: Attachment -> Maybe [Rectangle]
+ Data.SARIF.Attachment: [attachmentRegion] :: Attachment -> Maybe [Region]
+ Data.SARIF.Attachment: data Attachment
+ Data.SARIF.Attachment: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Attachment.Attachment
+ Data.SARIF.Attachment: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Attachment.Attachment
+ Data.SARIF.Attachment: instance GHC.Classes.Eq Data.SARIF.Attachment.Attachment
+ Data.SARIF.Attachment: instance GHC.Classes.Ord Data.SARIF.Attachment.Attachment
+ Data.SARIF.Attachment: instance GHC.Show.Show Data.SARIF.Attachment.Attachment
+ Data.SARIF.AutomationDetails: MkAutomationDetails :: Maybe Message -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe (Map Text Value) -> AutomationDetails
+ Data.SARIF.AutomationDetails: [automationDetailsCorrelationGuid] :: AutomationDetails -> Maybe Text
+ Data.SARIF.AutomationDetails: [automationDetailsDescription] :: AutomationDetails -> Maybe Message
+ Data.SARIF.AutomationDetails: [automationDetailsGuid] :: AutomationDetails -> Maybe Text
+ Data.SARIF.AutomationDetails: [automationDetailsId] :: AutomationDetails -> Maybe Text
+ Data.SARIF.AutomationDetails: [automationDetailsProperties] :: AutomationDetails -> Maybe (Map Text Value)
+ Data.SARIF.AutomationDetails: data AutomationDetails
+ Data.SARIF.AutomationDetails: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.AutomationDetails.AutomationDetails
+ Data.SARIF.AutomationDetails: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.AutomationDetails.AutomationDetails
+ Data.SARIF.AutomationDetails: instance GHC.Classes.Eq Data.SARIF.AutomationDetails.AutomationDetails
+ Data.SARIF.AutomationDetails: instance GHC.Classes.Ord Data.SARIF.AutomationDetails.AutomationDetails
+ Data.SARIF.AutomationDetails: instance GHC.Show.Show Data.SARIF.AutomationDetails.AutomationDetails
+ Data.SARIF.CodeFlow: MkCodeFlow :: Maybe Text -> [ThreadFlow] -> Maybe (Map Text Value) -> CodeFlow
+ Data.SARIF.CodeFlow: [codeFlowMessage] :: CodeFlow -> Maybe Text
+ Data.SARIF.CodeFlow: [codeFlowProperties] :: CodeFlow -> Maybe (Map Text Value)
+ Data.SARIF.CodeFlow: [codeFlowThreadFlows] :: CodeFlow -> [ThreadFlow]
+ Data.SARIF.CodeFlow: data CodeFlow
+ Data.SARIF.CodeFlow: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.CodeFlow.CodeFlow
+ Data.SARIF.CodeFlow: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.CodeFlow.CodeFlow
+ Data.SARIF.CodeFlow: instance GHC.Classes.Eq Data.SARIF.CodeFlow.CodeFlow
+ Data.SARIF.CodeFlow: instance GHC.Classes.Ord Data.SARIF.CodeFlow.CodeFlow
+ Data.SARIF.CodeFlow: instance GHC.Show.Show Data.SARIF.CodeFlow.CodeFlow
+ Data.SARIF.ConfigurationOverride: MkConfigurationOverride :: ReportingDescriptorReference -> ReportingConfiguration -> Maybe (Map Text Value) -> ConfigurationOverride
+ Data.SARIF.ConfigurationOverride: [configurationOverrideConfiguration] :: ConfigurationOverride -> ReportingConfiguration
+ Data.SARIF.ConfigurationOverride: [configurationOverrideDescriptor] :: ConfigurationOverride -> ReportingDescriptorReference
+ Data.SARIF.ConfigurationOverride: [configurationOverrideProperties] :: ConfigurationOverride -> Maybe (Map Text Value)
+ Data.SARIF.ConfigurationOverride: data ConfigurationOverride
+ Data.SARIF.ConfigurationOverride: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.ConfigurationOverride.ConfigurationOverride
+ Data.SARIF.ConfigurationOverride: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.ConfigurationOverride.ConfigurationOverride
+ Data.SARIF.ConfigurationOverride: instance GHC.Classes.Eq Data.SARIF.ConfigurationOverride.ConfigurationOverride
+ Data.SARIF.ConfigurationOverride: instance GHC.Classes.Ord Data.SARIF.ConfigurationOverride.ConfigurationOverride
+ Data.SARIF.ConfigurationOverride: instance GHC.Show.Show Data.SARIF.ConfigurationOverride.ConfigurationOverride
+ Data.SARIF.Conversion: MkConversion :: Tool -> Maybe Invocation -> Maybe [ArtifactLocation] -> Maybe (Map Text Value) -> Conversion
+ Data.SARIF.Conversion: [conversionAnalysisToolLogFiles] :: Conversion -> Maybe [ArtifactLocation]
+ Data.SARIF.Conversion: [conversionInvocation] :: Conversion -> Maybe Invocation
+ Data.SARIF.Conversion: [conversionProperties] :: Conversion -> Maybe (Map Text Value)
+ Data.SARIF.Conversion: [conversionTool] :: Conversion -> Tool
+ Data.SARIF.Conversion: data Conversion
+ Data.SARIF.Conversion: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Conversion.Conversion
+ Data.SARIF.Conversion: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Conversion.Conversion
+ Data.SARIF.Conversion: instance GHC.Classes.Eq Data.SARIF.Conversion.Conversion
+ Data.SARIF.Conversion: instance GHC.Classes.Ord Data.SARIF.Conversion.Conversion
+ Data.SARIF.Conversion: instance GHC.Show.Show Data.SARIF.Conversion.Conversion
+ Data.SARIF.Edge: MkEdge :: Text -> Maybe Message -> Node -> Node -> Maybe (Map Text Value) -> Edge
+ Data.SARIF.Edge: [edgeId] :: Edge -> Text
+ Data.SARIF.Edge: [edgeLabel] :: Edge -> Maybe Message
+ Data.SARIF.Edge: [edgeProperties] :: Edge -> Maybe (Map Text Value)
+ Data.SARIF.Edge: [edgeSourceNodeId] :: Edge -> Node
+ Data.SARIF.Edge: [edgeTargetNodeId] :: Edge -> Node
+ Data.SARIF.Edge: data Edge
+ Data.SARIF.Edge: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Edge.Edge
+ Data.SARIF.Edge: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Edge.Edge
+ Data.SARIF.Edge: instance GHC.Classes.Eq Data.SARIF.Edge.Edge
+ Data.SARIF.Edge: instance GHC.Classes.Ord Data.SARIF.Edge.Edge
+ Data.SARIF.Edge: instance GHC.Show.Show Data.SARIF.Edge.Edge
+ Data.SARIF.EdgeTraversal: MkEdgeTraversal :: Edge -> Maybe Message -> Maybe (Map Text MultiformatMessageString) -> Maybe Int -> Maybe (Map Text Value) -> EdgeTraversal
+ Data.SARIF.EdgeTraversal: [edgeTraversalEdgeId] :: EdgeTraversal -> Edge
+ Data.SARIF.EdgeTraversal: [edgeTraversalFinalState] :: EdgeTraversal -> Maybe (Map Text MultiformatMessageString)
+ Data.SARIF.EdgeTraversal: [edgeTraversalMessage] :: EdgeTraversal -> Maybe Message
+ Data.SARIF.EdgeTraversal: [edgeTraversalProperties] :: EdgeTraversal -> Maybe (Map Text Value)
+ Data.SARIF.EdgeTraversal: [edgeTraversalStepOverEdgeCount] :: EdgeTraversal -> Maybe Int
+ Data.SARIF.EdgeTraversal: data EdgeTraversal
+ Data.SARIF.EdgeTraversal: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.EdgeTraversal.EdgeTraversal
+ Data.SARIF.EdgeTraversal: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.EdgeTraversal.EdgeTraversal
+ Data.SARIF.EdgeTraversal: instance GHC.Classes.Eq Data.SARIF.EdgeTraversal.EdgeTraversal
+ Data.SARIF.EdgeTraversal: instance GHC.Classes.Ord Data.SARIF.EdgeTraversal.EdgeTraversal
+ Data.SARIF.EdgeTraversal: instance GHC.Show.Show Data.SARIF.EdgeTraversal.EdgeTraversal
+ Data.SARIF.Exception: MkException :: Text -> Text -> Maybe Stack -> Maybe [Exception] -> Maybe (Map Text Value) -> Exception
+ Data.SARIF.Exception: [exceptionInnerExceptions] :: Exception -> Maybe [Exception]
+ Data.SARIF.Exception: [exceptionKind] :: Exception -> Text
+ Data.SARIF.Exception: [exceptionMessage] :: Exception -> Text
+ Data.SARIF.Exception: [exceptionProperties] :: Exception -> Maybe (Map Text Value)
+ Data.SARIF.Exception: [exceptionStack] :: Exception -> Maybe Stack
+ Data.SARIF.Exception: data Exception
+ Data.SARIF.Exception: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Exception.Exception
+ Data.SARIF.Exception: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Exception.Exception
+ Data.SARIF.Exception: instance GHC.Classes.Eq Data.SARIF.Exception.Exception
+ Data.SARIF.Exception: instance GHC.Classes.Ord Data.SARIF.Exception.Exception
+ Data.SARIF.Exception: instance GHC.Show.Show Data.SARIF.Exception.Exception
+ Data.SARIF.ExternalProperties: MkExternalProperties :: Maybe Text -> Maybe Text -> Text -> Maybe Text -> Maybe ExternalPropertyFileReferences -> ExternalProperties
+ Data.SARIF.ExternalProperties: [externalPropertiesGuid] :: ExternalProperties -> Text
+ Data.SARIF.ExternalProperties: [externalPropertiesProperties] :: ExternalProperties -> Maybe ExternalPropertyFileReferences
+ Data.SARIF.ExternalProperties: [externalPropertiesRunGuid] :: ExternalProperties -> Maybe Text
+ Data.SARIF.ExternalProperties: [externalPropertiesSchema] :: ExternalProperties -> Maybe Text
+ Data.SARIF.ExternalProperties: [externalPropertiesVersion] :: ExternalProperties -> Maybe Text
+ Data.SARIF.ExternalProperties: data ExternalProperties
+ Data.SARIF.ExternalProperties: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.ExternalProperties.ExternalProperties
+ Data.SARIF.ExternalProperties: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.ExternalProperties.ExternalProperties
+ Data.SARIF.ExternalProperties: instance GHC.Classes.Eq Data.SARIF.ExternalProperties.ExternalProperties
+ Data.SARIF.ExternalProperties: instance GHC.Classes.Ord Data.SARIF.ExternalProperties.ExternalProperties
+ Data.SARIF.ExternalProperties: instance GHC.Show.Show Data.SARIF.ExternalProperties.ExternalProperties
+ Data.SARIF.ExternalPropertyFileReference: MkExternalPropertyFileReference :: Maybe ArtifactLocation -> Maybe Text -> Maybe Int -> Maybe (Map Text Value) -> ExternalPropertyFileReference
+ Data.SARIF.ExternalPropertyFileReference: [externalPropertyFileReferenceGuid] :: ExternalPropertyFileReference -> Maybe Text
+ Data.SARIF.ExternalPropertyFileReference: [externalPropertyFileReferenceItemCount] :: ExternalPropertyFileReference -> Maybe Int
+ Data.SARIF.ExternalPropertyFileReference: [externalPropertyFileReferenceLocation] :: ExternalPropertyFileReference -> Maybe ArtifactLocation
+ Data.SARIF.ExternalPropertyFileReference: [externalPropertyFileReferenceProperties] :: ExternalPropertyFileReference -> Maybe (Map Text Value)
+ Data.SARIF.ExternalPropertyFileReference: data ExternalPropertyFileReference
+ Data.SARIF.ExternalPropertyFileReference: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.ExternalPropertyFileReference.ExternalPropertyFileReference
+ Data.SARIF.ExternalPropertyFileReference: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.ExternalPropertyFileReference.ExternalPropertyFileReference
+ Data.SARIF.ExternalPropertyFileReference: instance GHC.Classes.Eq Data.SARIF.ExternalPropertyFileReference.ExternalPropertyFileReference
+ Data.SARIF.ExternalPropertyFileReference: instance GHC.Classes.Ord Data.SARIF.ExternalPropertyFileReference.ExternalPropertyFileReference
+ Data.SARIF.ExternalPropertyFileReference: instance GHC.Show.Show Data.SARIF.ExternalPropertyFileReference.ExternalPropertyFileReference
+ Data.SARIF.ExternalPropertyFileReferences: MkExternalPropertyFileReferences :: Maybe [ExternalPropertyFileReference] -> Maybe [ExternalPropertyFileReference] -> Maybe ExternalPropertyFileReference -> Maybe [ExternalPropertyFileReference] -> Maybe [ExternalPropertyFileReference] -> Maybe [ExternalPropertyFileReference] -> Maybe [ExternalPropertyFileReference] -> Maybe ExternalPropertyFileReference -> Maybe [ExternalPropertyFileReference] -> Maybe [ExternalPropertyFileReference] -> Maybe [ExternalPropertyFileReference] -> Maybe [ExternalPropertyFileReference] -> Maybe [ExternalPropertyFileReference] -> Maybe [ExternalPropertyFileReference] -> Maybe ExternalPropertyFileReference -> Maybe [ExternalPropertyFileReference] -> Maybe (Map Text Value) -> ExternalPropertyFileReferences
+ Data.SARIF.ExternalPropertyFileReferences: [externalPropertyFileReferencesAddresses] :: ExternalPropertyFileReferences -> Maybe [ExternalPropertyFileReference]
+ Data.SARIF.ExternalPropertyFileReferences: [externalPropertyFileReferencesArtifacts] :: ExternalPropertyFileReferences -> Maybe [ExternalPropertyFileReference]
+ Data.SARIF.ExternalPropertyFileReferences: [externalPropertyFileReferencesConversion] :: ExternalPropertyFileReferences -> Maybe ExternalPropertyFileReference
+ Data.SARIF.ExternalPropertyFileReferences: [externalPropertyFileReferencesDriver] :: ExternalPropertyFileReferences -> Maybe ExternalPropertyFileReference
+ Data.SARIF.ExternalPropertyFileReferences: [externalPropertyFileReferencesExtensions] :: ExternalPropertyFileReferences -> Maybe [ExternalPropertyFileReference]
+ Data.SARIF.ExternalPropertyFileReferences: [externalPropertyFileReferencesExternalizedProperties] :: ExternalPropertyFileReferences -> Maybe ExternalPropertyFileReference
+ Data.SARIF.ExternalPropertyFileReferences: [externalPropertyFileReferencesGraphs] :: ExternalPropertyFileReferences -> Maybe [ExternalPropertyFileReference]
+ Data.SARIF.ExternalPropertyFileReferences: [externalPropertyFileReferencesInvocations] :: ExternalPropertyFileReferences -> Maybe [ExternalPropertyFileReference]
+ Data.SARIF.ExternalPropertyFileReferences: [externalPropertyFileReferencesLogicalLocations] :: ExternalPropertyFileReferences -> Maybe [ExternalPropertyFileReference]
+ Data.SARIF.ExternalPropertyFileReferences: [externalPropertyFileReferencesPolicies] :: ExternalPropertyFileReferences -> Maybe [ExternalPropertyFileReference]
+ Data.SARIF.ExternalPropertyFileReferences: [externalPropertyFileReferencesProperties] :: ExternalPropertyFileReferences -> Maybe (Map Text Value)
+ Data.SARIF.ExternalPropertyFileReferences: [externalPropertyFileReferencesResults] :: ExternalPropertyFileReferences -> Maybe [ExternalPropertyFileReference]
+ Data.SARIF.ExternalPropertyFileReferences: [externalPropertyFileReferencesTaxonomies] :: ExternalPropertyFileReferences -> Maybe [ExternalPropertyFileReference]
+ Data.SARIF.ExternalPropertyFileReferences: [externalPropertyFileReferencesThreadFlowLocations] :: ExternalPropertyFileReferences -> Maybe [ExternalPropertyFileReference]
+ Data.SARIF.ExternalPropertyFileReferences: [externalPropertyFileReferencesTranslations] :: ExternalPropertyFileReferences -> Maybe [ExternalPropertyFileReference]
+ Data.SARIF.ExternalPropertyFileReferences: [externalPropertyFileReferencesWebRequests] :: ExternalPropertyFileReferences -> Maybe [ExternalPropertyFileReference]
+ Data.SARIF.ExternalPropertyFileReferences: [externalPropertyFileReferencesWebResponses] :: ExternalPropertyFileReferences -> Maybe [ExternalPropertyFileReference]
+ Data.SARIF.ExternalPropertyFileReferences: data ExternalPropertyFileReferences
+ Data.SARIF.ExternalPropertyFileReferences: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.ExternalPropertyFileReferences.ExternalPropertyFileReferences
+ Data.SARIF.ExternalPropertyFileReferences: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.ExternalPropertyFileReferences.ExternalPropertyFileReferences
+ Data.SARIF.ExternalPropertyFileReferences: instance GHC.Classes.Eq Data.SARIF.ExternalPropertyFileReferences.ExternalPropertyFileReferences
+ Data.SARIF.ExternalPropertyFileReferences: instance GHC.Classes.Ord Data.SARIF.ExternalPropertyFileReferences.ExternalPropertyFileReferences
+ Data.SARIF.ExternalPropertyFileReferences: instance GHC.Show.Show Data.SARIF.ExternalPropertyFileReferences.ExternalPropertyFileReferences
+ Data.SARIF.Fix: MkFix :: Message -> [ArtifactChange] -> Maybe (Map Text Value) -> Fix
+ Data.SARIF.Fix: [fixArtifactChanges] :: Fix -> [ArtifactChange]
+ Data.SARIF.Fix: [fixDescription] :: Fix -> Message
+ Data.SARIF.Fix: [fixProperties] :: Fix -> Maybe (Map Text Value)
+ Data.SARIF.Fix: data Fix
+ Data.SARIF.Fix: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Fix.Fix
+ Data.SARIF.Fix: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Fix.Fix
+ Data.SARIF.Fix: instance GHC.Classes.Eq Data.SARIF.Fix.Fix
+ Data.SARIF.Fix: instance GHC.Classes.Ord Data.SARIF.Fix.Fix
+ Data.SARIF.Fix: instance GHC.Show.Show Data.SARIF.Fix.Fix
+ Data.SARIF.Graph: MkGraph :: Maybe Message -> Maybe [Node] -> Maybe [Edge] -> Maybe (Map Text Value) -> Graph
+ Data.SARIF.Graph: [graphDescription] :: Graph -> Maybe Message
+ Data.SARIF.Graph: [graphEdges] :: Graph -> Maybe [Edge]
+ Data.SARIF.Graph: [graphNodes] :: Graph -> Maybe [Node]
+ Data.SARIF.Graph: [graphProperties] :: Graph -> Maybe (Map Text Value)
+ Data.SARIF.Graph: data Graph
+ Data.SARIF.Graph: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Graph.Graph
+ Data.SARIF.Graph: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Graph.Graph
+ Data.SARIF.Graph: instance GHC.Classes.Eq Data.SARIF.Graph.Graph
+ Data.SARIF.Graph: instance GHC.Classes.Ord Data.SARIF.Graph.Graph
+ Data.SARIF.Graph: instance GHC.Show.Show Data.SARIF.Graph.Graph
+ Data.SARIF.GraphTraversal: MkGraphTraversal :: Maybe Int -> Maybe Int -> Maybe Message -> Map Text MultiformatMessageString -> Map Text MultiformatMessageString -> Maybe [EdgeTraversal] -> Maybe (Map Text Value) -> GraphTraversal
+ Data.SARIF.GraphTraversal: [graphTraversalDescription] :: GraphTraversal -> Maybe Message
+ Data.SARIF.GraphTraversal: [graphTraversalEdgeTraversals] :: GraphTraversal -> Maybe [EdgeTraversal]
+ Data.SARIF.GraphTraversal: [graphTraversalImmutableState] :: GraphTraversal -> Map Text MultiformatMessageString
+ Data.SARIF.GraphTraversal: [graphTraversalInitialState] :: GraphTraversal -> Map Text MultiformatMessageString
+ Data.SARIF.GraphTraversal: [graphTraversalProperties] :: GraphTraversal -> Maybe (Map Text Value)
+ Data.SARIF.GraphTraversal: [graphTraversalResultGraphIndex] :: GraphTraversal -> Maybe Int
+ Data.SARIF.GraphTraversal: [graphTraversalRunGraphIndex] :: GraphTraversal -> Maybe Int
+ Data.SARIF.GraphTraversal: data GraphTraversal
+ Data.SARIF.GraphTraversal: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.GraphTraversal.GraphTraversal
+ Data.SARIF.GraphTraversal: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.GraphTraversal.GraphTraversal
+ Data.SARIF.GraphTraversal: instance GHC.Classes.Eq Data.SARIF.GraphTraversal.GraphTraversal
+ Data.SARIF.GraphTraversal: instance GHC.Classes.Ord Data.SARIF.GraphTraversal.GraphTraversal
+ Data.SARIF.GraphTraversal: instance GHC.Show.Show Data.SARIF.GraphTraversal.GraphTraversal
+ Data.SARIF.Invocation: MkInvocation :: Maybe Text -> Maybe [Text] -> Maybe [ArtifactLocation] -> Maybe [ConfigurationOverride] -> Maybe [ConfigurationOverride] -> Maybe Text -> Maybe Text -> Maybe Int -> Maybe Text -> Maybe Text -> Maybe Int -> Maybe Text -> Bool -> Maybe Text -> Maybe Text -> Maybe Int -> Maybe ArtifactLocation -> Maybe ArtifactLocation -> Maybe (Map Text Text) -> Maybe [Notification] -> Maybe [Notification] -> Maybe ArtifactLocation -> Maybe ArtifactLocation -> Maybe ArtifactLocation -> Maybe ArtifactLocation -> Maybe (Map Text Value) -> Invocation
+ Data.SARIF.Invocation: [invocationAccount] :: Invocation -> Maybe Text
+ Data.SARIF.Invocation: [invocationArguments] :: Invocation -> Maybe [Text]
+ Data.SARIF.Invocation: [invocationCommandLine] :: Invocation -> Maybe Text
+ Data.SARIF.Invocation: [invocationEndTimeUtc] :: Invocation -> Maybe Text
+ Data.SARIF.Invocation: [invocationEnvironmentVariables] :: Invocation -> Maybe (Map Text Text)
+ Data.SARIF.Invocation: [invocationExecutableLocation] :: Invocation -> Maybe ArtifactLocation
+ Data.SARIF.Invocation: [invocationExecutionSuccessful] :: Invocation -> Bool
+ Data.SARIF.Invocation: [invocationExitCodeDescription] :: Invocation -> Maybe Text
+ Data.SARIF.Invocation: [invocationExitCode] :: Invocation -> Maybe Int
+ Data.SARIF.Invocation: [invocationExitSignalName] :: Invocation -> Maybe Text
+ Data.SARIF.Invocation: [invocationExitSignalNumber] :: Invocation -> Maybe Int
+ Data.SARIF.Invocation: [invocationMachine] :: Invocation -> Maybe Text
+ Data.SARIF.Invocation: [invocationNotificationConfigurationOverrides] :: Invocation -> Maybe [ConfigurationOverride]
+ Data.SARIF.Invocation: [invocationProcessId] :: Invocation -> Maybe Int
+ Data.SARIF.Invocation: [invocationProcessStartFailureMessage] :: Invocation -> Maybe Text
+ Data.SARIF.Invocation: [invocationProperties] :: Invocation -> Maybe (Map Text Value)
+ Data.SARIF.Invocation: [invocationResponseFiles] :: Invocation -> Maybe [ArtifactLocation]
+ Data.SARIF.Invocation: [invocationRuleConfigurationOverrides] :: Invocation -> Maybe [ConfigurationOverride]
+ Data.SARIF.Invocation: [invocationStartTimeUtc] :: Invocation -> Maybe Text
+ Data.SARIF.Invocation: [invocationStderr] :: Invocation -> Maybe ArtifactLocation
+ Data.SARIF.Invocation: [invocationStdin] :: Invocation -> Maybe ArtifactLocation
+ Data.SARIF.Invocation: [invocationStdoutStderr] :: Invocation -> Maybe ArtifactLocation
+ Data.SARIF.Invocation: [invocationStdout] :: Invocation -> Maybe ArtifactLocation
+ Data.SARIF.Invocation: [invocationToolConfigurationNotifications] :: Invocation -> Maybe [Notification]
+ Data.SARIF.Invocation: [invocationToolExecutionNotifications] :: Invocation -> Maybe [Notification]
+ Data.SARIF.Invocation: [invocationWorkingDirectory] :: Invocation -> Maybe ArtifactLocation
+ Data.SARIF.Invocation: data Invocation
+ Data.SARIF.Invocation: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Invocation.Invocation
+ Data.SARIF.Invocation: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Invocation.Invocation
+ Data.SARIF.Invocation: instance GHC.Classes.Eq Data.SARIF.Invocation.Invocation
+ Data.SARIF.Invocation: instance GHC.Classes.Ord Data.SARIF.Invocation.Invocation
+ Data.SARIF.Invocation: instance GHC.Show.Show Data.SARIF.Invocation.Invocation
+ Data.SARIF.Level: LevelError :: Level
+ Data.SARIF.Level: LevelNone :: Level
+ Data.SARIF.Level: LevelNote :: Level
+ Data.SARIF.Level: LevelWarning :: Level
+ Data.SARIF.Level: instance GHC.Classes.Ord Data.SARIF.Level.Level
+ Data.SARIF.Location: [locationAnnotations] :: Location -> Maybe [Region]
+ Data.SARIF.Location: [locationId] :: Location -> Maybe Integer
+ Data.SARIF.Location: [locationLogicalLocations] :: Location -> Maybe [LogicalLocation]
+ Data.SARIF.Location: [locationMessage] :: Location -> Maybe Message
+ Data.SARIF.Location: [locationProperties] :: Location -> Maybe (Map Text Value)
+ Data.SARIF.Location: [locationRelationship] :: Location -> Maybe [LocationRelationship]
+ Data.SARIF.Location: data Location
+ Data.SARIF.Location: instance GHC.Classes.Ord Data.SARIF.Location.Location
+ Data.SARIF.LocationRelationship: MkLocationRelationship :: Integer -> Maybe [LocationRelationshipKind] -> Maybe Message -> Maybe (Map Text Value) -> LocationRelationship
+ Data.SARIF.LocationRelationship: [logicalRelDescription] :: LocationRelationship -> Maybe Message
+ Data.SARIF.LocationRelationship: [logicalRelKinds] :: LocationRelationship -> Maybe [LocationRelationshipKind]
+ Data.SARIF.LocationRelationship: [logicalRelProperties] :: LocationRelationship -> Maybe (Map Text Value)
+ Data.SARIF.LocationRelationship: [logicalRelTarget] :: LocationRelationship -> Integer
+ Data.SARIF.LocationRelationship: data LocationRelationship
+ Data.SARIF.LocationRelationship: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.LocationRelationship.LocationRelationship
+ Data.SARIF.LocationRelationship: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.LocationRelationship.LocationRelationshipKind
+ Data.SARIF.LocationRelationship: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.LocationRelationship.LocationRelationship
+ Data.SARIF.LocationRelationship: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.LocationRelationship.LocationRelationshipKind
+ Data.SARIF.LocationRelationship: instance GHC.Classes.Eq Data.SARIF.LocationRelationship.LocationRelationship
+ Data.SARIF.LocationRelationship: instance GHC.Classes.Eq Data.SARIF.LocationRelationship.LocationRelationshipKind
+ Data.SARIF.LocationRelationship: instance GHC.Classes.Ord Data.SARIF.LocationRelationship.LocationRelationship
+ Data.SARIF.LocationRelationship: instance GHC.Classes.Ord Data.SARIF.LocationRelationship.LocationRelationshipKind
+ Data.SARIF.LocationRelationship: instance GHC.Show.Show Data.SARIF.LocationRelationship.LocationRelationship
+ Data.SARIF.LocationRelationship: instance GHC.Show.Show Data.SARIF.LocationRelationship.LocationRelationshipKind
+ Data.SARIF.Log: [logProperties] :: Log -> Maybe ExternalPropertyFileReferences
+ Data.SARIF.Log: [logSchema] :: Log -> Maybe Text
+ Data.SARIF.Log: instance GHC.Classes.Ord Data.SARIF.Log.Log
+ Data.SARIF.LogicalLocation: MkLogicalLocation :: Maybe Integer -> Text -> Maybe Text -> Maybe Text -> LogicalLocationKind -> Maybe Integer -> Maybe (Map Text Value) -> LogicalLocation
+ Data.SARIF.LogicalLocation: [logicalLocDecoratedName] :: LogicalLocation -> Maybe Text
+ Data.SARIF.LogicalLocation: [logicalLocFullyQualifiedName] :: LogicalLocation -> Maybe Text
+ Data.SARIF.LogicalLocation: [logicalLocIndex] :: LogicalLocation -> Maybe Integer
+ Data.SARIF.LogicalLocation: [logicalLocKind] :: LogicalLocation -> LogicalLocationKind
+ Data.SARIF.LogicalLocation: [logicalLocName] :: LogicalLocation -> Text
+ Data.SARIF.LogicalLocation: [logicalLocParentIndex] :: LogicalLocation -> Maybe Integer
+ Data.SARIF.LogicalLocation: [logicalLocProperties] :: LogicalLocation -> Maybe (Map Text Value)
+ Data.SARIF.LogicalLocation: data LogicalLocation
+ Data.SARIF.LogicalLocation: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.LogicalLocation.LogicalLocation
+ Data.SARIF.LogicalLocation: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.LogicalLocation.LogicalLocationKind
+ Data.SARIF.LogicalLocation: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.LogicalLocation.LogicalLocation
+ Data.SARIF.LogicalLocation: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.LogicalLocation.LogicalLocationKind
+ Data.SARIF.LogicalLocation: instance GHC.Classes.Eq Data.SARIF.LogicalLocation.LogicalLocation
+ Data.SARIF.LogicalLocation: instance GHC.Classes.Eq Data.SARIF.LogicalLocation.LogicalLocationKind
+ Data.SARIF.LogicalLocation: instance GHC.Classes.Ord Data.SARIF.LogicalLocation.LogicalLocation
+ Data.SARIF.LogicalLocation: instance GHC.Classes.Ord Data.SARIF.LogicalLocation.LogicalLocationKind
+ Data.SARIF.LogicalLocation: instance GHC.Show.Show Data.SARIF.LogicalLocation.LogicalLocation
+ Data.SARIF.LogicalLocation: instance GHC.Show.Show Data.SARIF.LogicalLocation.LogicalLocationKind
+ Data.SARIF.Message: MkMessage :: Maybe Text -> Maybe Text -> Maybe Text -> Maybe [Text] -> Maybe (Map Text Value) -> Message
+ Data.SARIF.Message: [messageArguments] :: Message -> Maybe [Text]
+ Data.SARIF.Message: [messageId] :: Message -> Maybe Text
+ Data.SARIF.Message: [messageMarkdown] :: Message -> Maybe Text
+ Data.SARIF.Message: [messageProperties] :: Message -> Maybe (Map Text Value)
+ Data.SARIF.Message: [messageText] :: Message -> Maybe Text
+ Data.SARIF.Message: data Message
+ Data.SARIF.Message: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Message.Message
+ Data.SARIF.Message: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Message.Message
+ Data.SARIF.Message: instance GHC.Classes.Eq Data.SARIF.Message.Message
+ Data.SARIF.Message: instance GHC.Classes.Ord Data.SARIF.Message.Message
+ Data.SARIF.Message: instance GHC.Show.Show Data.SARIF.Message.Message
+ Data.SARIF.MultiformatMessageString: [mmsProperties] :: MultiformatMessageString -> Maybe (Map Text Value)
+ Data.SARIF.MultiformatMessageString: instance GHC.Classes.Ord Data.SARIF.MultiformatMessageString.MultiformatMessageString
+ Data.SARIF.Node: MkNode :: Text -> Maybe Message -> Location -> Maybe [Node] -> Maybe (Map Text Value) -> Node
+ Data.SARIF.Node: [nodeChildren] :: Node -> Maybe [Node]
+ Data.SARIF.Node: [nodeId] :: Node -> Text
+ Data.SARIF.Node: [nodeLocation] :: Node -> Location
+ Data.SARIF.Node: [nodeMessage] :: Node -> Maybe Message
+ Data.SARIF.Node: [nodeProperties] :: Node -> Maybe (Map Text Value)
+ Data.SARIF.Node: data Node
+ Data.SARIF.Node: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Node.Node
+ Data.SARIF.Node: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Node.Node
+ Data.SARIF.Node: instance GHC.Classes.Eq Data.SARIF.Node.Node
+ Data.SARIF.Node: instance GHC.Classes.Ord Data.SARIF.Node.Node
+ Data.SARIF.Node: instance GHC.Show.Show Data.SARIF.Node.Node
+ Data.SARIF.Notification: MkNotification :: ReportingDescriptorReference -> Maybe ReportingDescriptorReference -> Maybe [Location] -> Maybe Message -> Maybe NotificationLevel -> Maybe Int -> Maybe Text -> Maybe Exception -> Maybe (Map Text Value) -> Notification
+ Data.SARIF.Notification: NotificationErrorLevel :: NotificationLevel
+ Data.SARIF.Notification: NotificationNoneLevel :: NotificationLevel
+ Data.SARIF.Notification: NotificationNoteLevel :: NotificationLevel
+ Data.SARIF.Notification: NotificationWarningLevel :: NotificationLevel
+ Data.SARIF.Notification: [notificationAssociatedRule] :: Notification -> Maybe ReportingDescriptorReference
+ Data.SARIF.Notification: [notificationDescriptor] :: Notification -> ReportingDescriptorReference
+ Data.SARIF.Notification: [notificationException] :: Notification -> Maybe Exception
+ Data.SARIF.Notification: [notificationLevel] :: Notification -> Maybe NotificationLevel
+ Data.SARIF.Notification: [notificationLocations] :: Notification -> Maybe [Location]
+ Data.SARIF.Notification: [notificationMessage] :: Notification -> Maybe Message
+ Data.SARIF.Notification: [notificationProperties] :: Notification -> Maybe (Map Text Value)
+ Data.SARIF.Notification: [notificationThreadId] :: Notification -> Maybe Int
+ Data.SARIF.Notification: [notificationTimeUtc] :: Notification -> Maybe Text
+ Data.SARIF.Notification: data Notification
+ Data.SARIF.Notification: data NotificationLevel
+ Data.SARIF.Notification: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Notification.Notification
+ Data.SARIF.Notification: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Notification.NotificationLevel
+ Data.SARIF.Notification: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Notification.Notification
+ Data.SARIF.Notification: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Notification.NotificationLevel
+ Data.SARIF.Notification: instance GHC.Classes.Eq Data.SARIF.Notification.Notification
+ Data.SARIF.Notification: instance GHC.Classes.Eq Data.SARIF.Notification.NotificationLevel
+ Data.SARIF.Notification: instance GHC.Classes.Ord Data.SARIF.Notification.Notification
+ Data.SARIF.Notification: instance GHC.Classes.Ord Data.SARIF.Notification.NotificationLevel
+ Data.SARIF.Notification: instance GHC.Show.Show Data.SARIF.Notification.Notification
+ Data.SARIF.Notification: instance GHC.Show.Show Data.SARIF.Notification.NotificationLevel
+ Data.SARIF.PhysicalLocation: MkPhysicalLocation :: Maybe ArtifactLocation -> Maybe Region -> Maybe Region -> Maybe Address -> Maybe (Map Text Value) -> PhysicalLocation
+ Data.SARIF.PhysicalLocation: [physicalLocAddress] :: PhysicalLocation -> Maybe Address
+ Data.SARIF.PhysicalLocation: [physicalLocArtifactLocation] :: PhysicalLocation -> Maybe ArtifactLocation
+ Data.SARIF.PhysicalLocation: [physicalLocContextRegion] :: PhysicalLocation -> Maybe Region
+ Data.SARIF.PhysicalLocation: [physicalLocProperties] :: PhysicalLocation -> Maybe (Map Text Value)
+ Data.SARIF.PhysicalLocation: [physicalLocRegion] :: PhysicalLocation -> Maybe Region
+ Data.SARIF.PhysicalLocation: data PhysicalLocation
+ Data.SARIF.PhysicalLocation: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.PhysicalLocation.PhysicalLocation
+ Data.SARIF.PhysicalLocation: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.PhysicalLocation.PhysicalLocation
+ Data.SARIF.PhysicalLocation: instance GHC.Classes.Eq Data.SARIF.PhysicalLocation.PhysicalLocation
+ Data.SARIF.PhysicalLocation: instance GHC.Classes.Ord Data.SARIF.PhysicalLocation.PhysicalLocation
+ Data.SARIF.PhysicalLocation: instance GHC.Show.Show Data.SARIF.PhysicalLocation.PhysicalLocation
+ Data.SARIF.Rectangle: MkRectangle :: Int -> Int -> Int -> Int -> Message -> Maybe (Map Text Value) -> Rectangle
+ Data.SARIF.Rectangle: [rectangleBottom] :: Rectangle -> Int
+ Data.SARIF.Rectangle: [rectangleLeft] :: Rectangle -> Int
+ Data.SARIF.Rectangle: [rectangleMessage] :: Rectangle -> Message
+ Data.SARIF.Rectangle: [rectangleProperties] :: Rectangle -> Maybe (Map Text Value)
+ Data.SARIF.Rectangle: [rectangleRight] :: Rectangle -> Int
+ Data.SARIF.Rectangle: [rectangleTop] :: Rectangle -> Int
+ Data.SARIF.Rectangle: data Rectangle
+ Data.SARIF.Rectangle: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Rectangle.Rectangle
+ Data.SARIF.Rectangle: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Rectangle.Rectangle
+ Data.SARIF.Rectangle: instance GHC.Classes.Eq Data.SARIF.Rectangle.Rectangle
+ Data.SARIF.Rectangle: instance GHC.Classes.Ord Data.SARIF.Rectangle.Rectangle
+ Data.SARIF.Rectangle: instance GHC.Show.Show Data.SARIF.Rectangle.Rectangle
+ Data.SARIF.Region: MkRegion :: Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe ArtifactContent -> Maybe Message -> Maybe Text -> Maybe (Map Text Value) -> Region
+ Data.SARIF.Region: [regionByteLength] :: Region -> Maybe Int
+ Data.SARIF.Region: [regionByteOffset] :: Region -> Maybe Int
+ Data.SARIF.Region: [regionCharLength] :: Region -> Maybe Int
+ Data.SARIF.Region: [regionCharOffset] :: Region -> Maybe Int
+ Data.SARIF.Region: [regionEndColumn] :: Region -> Maybe Int
+ Data.SARIF.Region: [regionEndLine] :: Region -> Maybe Int
+ Data.SARIF.Region: [regionMessage] :: Region -> Maybe Message
+ Data.SARIF.Region: [regionProperties] :: Region -> Maybe (Map Text Value)
+ Data.SARIF.Region: [regionSnippet] :: Region -> Maybe ArtifactContent
+ Data.SARIF.Region: [regionSourceLanguage] :: Region -> Maybe Text
+ Data.SARIF.Region: [regionStartColumn] :: Region -> Maybe Int
+ Data.SARIF.Region: [regionStartLine] :: Region -> Maybe Int
+ Data.SARIF.Region: data Region
+ Data.SARIF.Region: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Region.Region
+ Data.SARIF.Region: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Region.Region
+ Data.SARIF.Region: instance GHC.Classes.Eq Data.SARIF.Region.Region
+ Data.SARIF.Region: instance GHC.Classes.Ord Data.SARIF.Region.Region
+ Data.SARIF.Region: instance GHC.Show.Show Data.SARIF.Region.Region
+ Data.SARIF.Replacement: MkReplacement :: Region -> Maybe ArtifactContent -> Maybe (Map Text Value) -> Replacement
+ Data.SARIF.Replacement: [replacementDeletedRegion] :: Replacement -> Region
+ Data.SARIF.Replacement: [replacementInsertedContent] :: Replacement -> Maybe ArtifactContent
+ Data.SARIF.Replacement: [replacementProperties] :: Replacement -> Maybe (Map Text Value)
+ Data.SARIF.Replacement: data Replacement
+ Data.SARIF.Replacement: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Replacement.Replacement
+ Data.SARIF.Replacement: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Replacement.Replacement
+ Data.SARIF.Replacement: instance GHC.Classes.Eq Data.SARIF.Replacement.Replacement
+ Data.SARIF.Replacement: instance GHC.Classes.Ord Data.SARIF.Replacement.Replacement
+ Data.SARIF.Replacement: instance GHC.Show.Show Data.SARIF.Replacement.Replacement
+ Data.SARIF.ReportingConfiguration: MkReportingConfiguration :: Bool -> Maybe Level -> Maybe Double -> Maybe (Map Text Value) -> Maybe (Map Text Value) -> ReportingConfiguration
+ Data.SARIF.ReportingConfiguration: [reportingConfigurationEnabled] :: ReportingConfiguration -> Bool
+ Data.SARIF.ReportingConfiguration: [reportingConfigurationLevel] :: ReportingConfiguration -> Maybe Level
+ Data.SARIF.ReportingConfiguration: [reportingConfigurationParameters] :: ReportingConfiguration -> Maybe (Map Text Value)
+ Data.SARIF.ReportingConfiguration: [reportingConfigurationProperties] :: ReportingConfiguration -> Maybe (Map Text Value)
+ Data.SARIF.ReportingConfiguration: [reportingConfigurationRank] :: ReportingConfiguration -> Maybe Double
+ Data.SARIF.ReportingConfiguration: data ReportingConfiguration
+ Data.SARIF.ReportingConfiguration: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.ReportingConfiguration.ReportingConfiguration
+ Data.SARIF.ReportingConfiguration: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.ReportingConfiguration.ReportingConfiguration
+ Data.SARIF.ReportingConfiguration: instance GHC.Classes.Eq Data.SARIF.ReportingConfiguration.ReportingConfiguration
+ Data.SARIF.ReportingConfiguration: instance GHC.Classes.Ord Data.SARIF.ReportingConfiguration.ReportingConfiguration
+ Data.SARIF.ReportingConfiguration: instance GHC.Show.Show Data.SARIF.ReportingConfiguration.ReportingConfiguration
+ Data.SARIF.ReportingDescriptor: [reportingDescriptorDefaultConfiguration] :: ReportingDescriptor -> Maybe ReportingConfiguration
+ Data.SARIF.ReportingDescriptor: [reportingDescriptorDeprecatedGuids] :: ReportingDescriptor -> Maybe [UUID]
+ Data.SARIF.ReportingDescriptor: [reportingDescriptorDeprecatedIds] :: ReportingDescriptor -> Maybe [Text]
+ Data.SARIF.ReportingDescriptor: [reportingDescriptorDeprecatedNames] :: ReportingDescriptor -> Maybe [Text]
+ Data.SARIF.ReportingDescriptor: [reportingDescriptorFullDescription] :: ReportingDescriptor -> Maybe MultiformatMessageString
+ Data.SARIF.ReportingDescriptor: [reportingDescriptorGuid] :: ReportingDescriptor -> Maybe UUID
+ Data.SARIF.ReportingDescriptor: [reportingDescriptorHelpUri] :: ReportingDescriptor -> Maybe Text
+ Data.SARIF.ReportingDescriptor: [reportingDescriptorHelp] :: ReportingDescriptor -> Maybe MultiformatMessageString
+ Data.SARIF.ReportingDescriptor: [reportingDescriptorId] :: ReportingDescriptor -> Text
+ Data.SARIF.ReportingDescriptor: [reportingDescriptorMessageStrings] :: ReportingDescriptor -> Maybe (Map Text MultiformatMessageString)
+ Data.SARIF.ReportingDescriptor: [reportingDescriptorName] :: ReportingDescriptor -> Maybe Text
+ Data.SARIF.ReportingDescriptor: [reportingDescriptorProperties] :: ReportingDescriptor -> Maybe (Map Text Value)
+ Data.SARIF.ReportingDescriptor: [reportingDescriptorRelationships] :: ReportingDescriptor -> Maybe ReportingDescriptorRelationship
+ Data.SARIF.ReportingDescriptor: [reportingDescriptorShortDescription] :: ReportingDescriptor -> Maybe MultiformatMessageString
+ Data.SARIF.ReportingDescriptor: instance GHC.Classes.Ord Data.SARIF.ReportingDescriptor.ReportingDescriptor
+ Data.SARIF.ReportingDescriptorReference: MkReportingDescriptorReference :: Maybe Text -> Maybe Integer -> Maybe UUID -> Maybe ToolComponentReference -> Maybe (Map Text Value) -> ReportingDescriptorReference
+ Data.SARIF.ReportingDescriptorReference: [reportingDescriptorReferenceGuid] :: ReportingDescriptorReference -> Maybe UUID
+ Data.SARIF.ReportingDescriptorReference: [reportingDescriptorReferenceId] :: ReportingDescriptorReference -> Maybe Text
+ Data.SARIF.ReportingDescriptorReference: [reportingDescriptorReferenceIndex] :: ReportingDescriptorReference -> Maybe Integer
+ Data.SARIF.ReportingDescriptorReference: [reportingDescriptorReferenceProperties] :: ReportingDescriptorReference -> Maybe (Map Text Value)
+ Data.SARIF.ReportingDescriptorReference: [reportingDescriptorReferenceToolComponent] :: ReportingDescriptorReference -> Maybe ToolComponentReference
+ Data.SARIF.ReportingDescriptorReference: data ReportingDescriptorReference
+ Data.SARIF.ReportingDescriptorReference: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.ReportingDescriptorReference.ReportingDescriptorReference
+ Data.SARIF.ReportingDescriptorReference: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.ReportingDescriptorReference.ReportingDescriptorReference
+ Data.SARIF.ReportingDescriptorReference: instance GHC.Classes.Eq Data.SARIF.ReportingDescriptorReference.ReportingDescriptorReference
+ Data.SARIF.ReportingDescriptorReference: instance GHC.Classes.Ord Data.SARIF.ReportingDescriptorReference.ReportingDescriptorReference
+ Data.SARIF.ReportingDescriptorReference: instance GHC.Show.Show Data.SARIF.ReportingDescriptorReference.ReportingDescriptorReference
+ Data.SARIF.ReportingDescriptorRelationship: MkReportingDescriptorRelationship :: ReportingDescriptorReference -> [ReportingDescriptorRelationshipKind] -> Maybe Message -> Maybe (Map Text Value) -> ReportingDescriptorRelationship
+ Data.SARIF.ReportingDescriptorRelationship: ReportingDescriptorRelationshipCanFollowKind :: ReportingDescriptorRelationshipKind
+ Data.SARIF.ReportingDescriptorRelationship: ReportingDescriptorRelationshipCanPrecedeKind :: ReportingDescriptorRelationshipKind
+ Data.SARIF.ReportingDescriptorRelationship: ReportingDescriptorRelationshipCustomKind :: Text -> ReportingDescriptorRelationshipKind
+ Data.SARIF.ReportingDescriptorRelationship: ReportingDescriptorRelationshipDisjointKind :: ReportingDescriptorRelationshipKind
+ Data.SARIF.ReportingDescriptorRelationship: ReportingDescriptorRelationshipEqualKind :: ReportingDescriptorRelationshipKind
+ Data.SARIF.ReportingDescriptorRelationship: ReportingDescriptorRelationshipIncomparableKind :: ReportingDescriptorRelationshipKind
+ Data.SARIF.ReportingDescriptorRelationship: ReportingDescriptorRelationshipRelevantKind :: ReportingDescriptorRelationshipKind
+ Data.SARIF.ReportingDescriptorRelationship: ReportingDescriptorRelationshipSubsetKind :: ReportingDescriptorRelationshipKind
+ Data.SARIF.ReportingDescriptorRelationship: ReportingDescriptorRelationshipSupersetKind :: ReportingDescriptorRelationshipKind
+ Data.SARIF.ReportingDescriptorRelationship: ReportingDescriptorRelationshipWillFollowKind :: ReportingDescriptorRelationshipKind
+ Data.SARIF.ReportingDescriptorRelationship: ReportingDescriptorRelationshipWillPrecedeKind :: ReportingDescriptorRelationshipKind
+ Data.SARIF.ReportingDescriptorRelationship: [reportingDescriptorRelationshipDescription] :: ReportingDescriptorRelationship -> Maybe Message
+ Data.SARIF.ReportingDescriptorRelationship: [reportingDescriptorRelationshipKinds] :: ReportingDescriptorRelationship -> [ReportingDescriptorRelationshipKind]
+ Data.SARIF.ReportingDescriptorRelationship: [reportingDescriptorRelationshipProperties] :: ReportingDescriptorRelationship -> Maybe (Map Text Value)
+ Data.SARIF.ReportingDescriptorRelationship: [reportingDescriptorRelationshipTarget] :: ReportingDescriptorRelationship -> ReportingDescriptorReference
+ Data.SARIF.ReportingDescriptorRelationship: data ReportingDescriptorRelationship
+ Data.SARIF.ReportingDescriptorRelationship: data ReportingDescriptorRelationshipKind
+ Data.SARIF.ReportingDescriptorRelationship: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.ReportingDescriptorRelationship.ReportingDescriptorRelationship
+ Data.SARIF.ReportingDescriptorRelationship: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.ReportingDescriptorRelationship.ReportingDescriptorRelationshipKind
+ Data.SARIF.ReportingDescriptorRelationship: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.ReportingDescriptorRelationship.ReportingDescriptorRelationship
+ Data.SARIF.ReportingDescriptorRelationship: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.ReportingDescriptorRelationship.ReportingDescriptorRelationshipKind
+ Data.SARIF.ReportingDescriptorRelationship: instance GHC.Classes.Eq Data.SARIF.ReportingDescriptorRelationship.ReportingDescriptorRelationship
+ Data.SARIF.ReportingDescriptorRelationship: instance GHC.Classes.Eq Data.SARIF.ReportingDescriptorRelationship.ReportingDescriptorRelationshipKind
+ Data.SARIF.ReportingDescriptorRelationship: instance GHC.Classes.Ord Data.SARIF.ReportingDescriptorRelationship.ReportingDescriptorRelationship
+ Data.SARIF.ReportingDescriptorRelationship: instance GHC.Classes.Ord Data.SARIF.ReportingDescriptorRelationship.ReportingDescriptorRelationshipKind
+ Data.SARIF.ReportingDescriptorRelationship: instance GHC.Show.Show Data.SARIF.ReportingDescriptorRelationship.ReportingDescriptorRelationship
+ Data.SARIF.ReportingDescriptorRelationship: instance GHC.Show.Show Data.SARIF.ReportingDescriptorRelationship.ReportingDescriptorRelationshipKind
+ Data.SARIF.Result: ResultBaselineAbsentState :: ResultBaselineState
+ Data.SARIF.Result: ResultBaselineNewState :: ResultBaselineState
+ Data.SARIF.Result: ResultBaselineUnchangedState :: ResultBaselineState
+ Data.SARIF.Result: ResultBaselineUpdatedState :: ResultBaselineState
+ Data.SARIF.Result: ResultErrorLevel :: ResultLevel
+ Data.SARIF.Result: ResultFailKind :: ResultKind
+ Data.SARIF.Result: ResultInformationalKind :: ResultKind
+ Data.SARIF.Result: ResultNoApplicableKind :: ResultKind
+ Data.SARIF.Result: ResultNoneLevel :: ResultLevel
+ Data.SARIF.Result: ResultNoteLevel :: ResultLevel
+ Data.SARIF.Result: ResultOpenKind :: ResultKind
+ Data.SARIF.Result: ResultPassKind :: ResultKind
+ Data.SARIF.Result: ResultReviewKind :: ResultKind
+ Data.SARIF.Result: ResultWarningLevel :: ResultLevel
+ Data.SARIF.Result: [resultAnalysisTarget] :: Result -> Maybe ArtifactLocation
+ Data.SARIF.Result: [resultAttachments] :: Result -> Maybe [Attachment]
+ Data.SARIF.Result: [resultBaselineState] :: Result -> Maybe ResultBaselineState
+ Data.SARIF.Result: [resultCodeFlows] :: Result -> Maybe [CodeFlow]
+ Data.SARIF.Result: [resultCorrelationGuid] :: Result -> Maybe UUID
+ Data.SARIF.Result: [resultFingerprints] :: Result -> Maybe (Map Text Text)
+ Data.SARIF.Result: [resultFixes] :: Result -> Maybe [Fix]
+ Data.SARIF.Result: [resultGraphTraversals] :: Result -> Maybe [GraphTraversal]
+ Data.SARIF.Result: [resultGraphs] :: Result -> Maybe [Graph]
+ Data.SARIF.Result: [resultGuid] :: Result -> Maybe UUID
+ Data.SARIF.Result: [resultHostedViewerUri] :: Result -> Maybe Text
+ Data.SARIF.Result: [resultKind] :: Result -> Maybe ResultKind
+ Data.SARIF.Result: [resultOccurrenceCount] :: Result -> Maybe Int
+ Data.SARIF.Result: [resultPartialFingerprints] :: Result -> Maybe (Map Text Text)
+ Data.SARIF.Result: [resultProperties] :: Result -> Maybe (Map Text Value)
+ Data.SARIF.Result: [resultProvenance] :: Result -> Maybe ResultProvenance
+ Data.SARIF.Result: [resultRank] :: Result -> Maybe Double
+ Data.SARIF.Result: [resultRelatedLocations] :: Result -> Maybe [Location]
+ Data.SARIF.Result: [resultRuleIndex] :: Result -> Maybe Int
+ Data.SARIF.Result: [resultRule] :: Result -> Maybe ReportingDescriptorReference
+ Data.SARIF.Result: [resultStacks] :: Result -> Maybe [Stack]
+ Data.SARIF.Result: [resultSuppressions] :: Result -> Maybe [Suppression]
+ Data.SARIF.Result: [resultTaxa] :: Result -> Maybe [ReportingDescriptorReference]
+ Data.SARIF.Result: [resultWebRequest] :: Result -> Maybe WebRequest
+ Data.SARIF.Result: [resultWebResponse] :: Result -> Maybe WebResponse
+ Data.SARIF.Result: [resultWorkItemUris] :: Result -> Maybe [Text]
+ Data.SARIF.Result: data ResultBaselineState
+ Data.SARIF.Result: data ResultKind
+ Data.SARIF.Result: data ResultLevel
+ Data.SARIF.Result: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Result.ResultBaselineState
+ Data.SARIF.Result: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Result.ResultKind
+ Data.SARIF.Result: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Result.ResultLevel
+ Data.SARIF.Result: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Result.ResultBaselineState
+ Data.SARIF.Result: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Result.ResultKind
+ Data.SARIF.Result: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Result.ResultLevel
+ Data.SARIF.Result: instance GHC.Classes.Eq Data.SARIF.Result.ResultBaselineState
+ Data.SARIF.Result: instance GHC.Classes.Eq Data.SARIF.Result.ResultKind
+ Data.SARIF.Result: instance GHC.Classes.Eq Data.SARIF.Result.ResultLevel
+ Data.SARIF.Result: instance GHC.Classes.Ord Data.SARIF.Result.Result
+ Data.SARIF.Result: instance GHC.Classes.Ord Data.SARIF.Result.ResultBaselineState
+ Data.SARIF.Result: instance GHC.Classes.Ord Data.SARIF.Result.ResultKind
+ Data.SARIF.Result: instance GHC.Classes.Ord Data.SARIF.Result.ResultLevel
+ Data.SARIF.Result: instance GHC.Show.Show Data.SARIF.Result.ResultBaselineState
+ Data.SARIF.Result: instance GHC.Show.Show Data.SARIF.Result.ResultKind
+ Data.SARIF.Result: instance GHC.Show.Show Data.SARIF.Result.ResultLevel
+ Data.SARIF.ResultProvenance: MkResultProvenance :: Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Int -> Maybe [PhysicalLocation] -> Maybe (Map Text Value) -> ResultProvenance
+ Data.SARIF.ResultProvenance: [resultProvenanceConversionSources] :: ResultProvenance -> Maybe [PhysicalLocation]
+ Data.SARIF.ResultProvenance: [resultProvenanceFirstDetectionRunGuid] :: ResultProvenance -> Maybe Text
+ Data.SARIF.ResultProvenance: [resultProvenanceFirstDetectionTimeUtc] :: ResultProvenance -> Maybe Text
+ Data.SARIF.ResultProvenance: [resultProvenanceInvocationIndex] :: ResultProvenance -> Maybe Int
+ Data.SARIF.ResultProvenance: [resultProvenanceLastDetectionRunGuid] :: ResultProvenance -> Maybe Text
+ Data.SARIF.ResultProvenance: [resultProvenanceLastDetectionTimeUtc] :: ResultProvenance -> Maybe Text
+ Data.SARIF.ResultProvenance: [resultProvenanceProperties] :: ResultProvenance -> Maybe (Map Text Value)
+ Data.SARIF.ResultProvenance: data ResultProvenance
+ Data.SARIF.ResultProvenance: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.ResultProvenance.ResultProvenance
+ Data.SARIF.ResultProvenance: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.ResultProvenance.ResultProvenance
+ Data.SARIF.ResultProvenance: instance GHC.Classes.Eq Data.SARIF.ResultProvenance.ResultProvenance
+ Data.SARIF.ResultProvenance: instance GHC.Classes.Ord Data.SARIF.ResultProvenance.ResultProvenance
+ Data.SARIF.ResultProvenance: instance GHC.Show.Show Data.SARIF.ResultProvenance.ResultProvenance
+ Data.SARIF.Run: RunCustomColumnKind :: Text -> RunColumnKind
+ Data.SARIF.Run: RunUnicodeCodePointsColumnKind :: RunColumnKind
+ Data.SARIF.Run: RunUtf16CodeUnitsColumnKind :: RunColumnKind
+ Data.SARIF.Run: [runAddresses] :: Run -> Maybe [Address]
+ Data.SARIF.Run: [runAggregates] :: Run -> Maybe [AutomationDetails]
+ Data.SARIF.Run: [runAutomationDetails] :: Run -> Maybe AutomationDetails
+ Data.SARIF.Run: [runBaselineGuid] :: Run -> Maybe Text
+ Data.SARIF.Run: [runColumnKind] :: Run -> Maybe RunColumnKind
+ Data.SARIF.Run: [runConversion] :: Run -> Maybe Conversion
+ Data.SARIF.Run: [runDefaultEncoding] :: Run -> Maybe Text
+ Data.SARIF.Run: [runDefaultSourceLanguage] :: Run -> Maybe Text
+ Data.SARIF.Run: [runExternalPropertyFileReferences] :: Run -> Maybe ExternalPropertyFileReferences
+ Data.SARIF.Run: [runGraphs] :: Run -> Maybe [Graph]
+ Data.SARIF.Run: [runInvocations] :: Run -> Maybe [Invocation]
+ Data.SARIF.Run: [runLanguage] :: Run -> Maybe Text
+ Data.SARIF.Run: [runLogicalLocations] :: Run -> Maybe [LogicalLocation]
+ Data.SARIF.Run: [runNewlineSequences] :: Run -> Maybe [Text]
+ Data.SARIF.Run: [runOriginalUriBaseIds] :: Run -> Maybe (Map Text ArtifactLocation)
+ Data.SARIF.Run: [runPolicies] :: Run -> Maybe [ToolComponent]
+ Data.SARIF.Run: [runProperties] :: Run -> Maybe (Map Text Value)
+ Data.SARIF.Run: [runRedactionTokens] :: Run -> Maybe [Text]
+ Data.SARIF.Run: [runSpecialLocations] :: Run -> Maybe [SpecialLocations]
+ Data.SARIF.Run: [runTaxonomies] :: Run -> Maybe [ToolComponent]
+ Data.SARIF.Run: [runThreadFlowLocations] :: Run -> Maybe [ThreadFlowLocation]
+ Data.SARIF.Run: [runTranslations] :: Run -> Maybe [ToolComponent]
+ Data.SARIF.Run: [runVersionControlProvenance] :: Run -> Maybe VersionControlDetails
+ Data.SARIF.Run: [runWebRequests] :: Run -> Maybe [WebRequest]
+ Data.SARIF.Run: [runWebResponses] :: Run -> Maybe [WebResponse]
+ Data.SARIF.Run: data RunColumnKind
+ Data.SARIF.Run: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Run.RunColumnKind
+ Data.SARIF.Run: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Run.RunColumnKind
+ Data.SARIF.Run: instance GHC.Classes.Eq Data.SARIF.Run.RunColumnKind
+ Data.SARIF.Run: instance GHC.Classes.Ord Data.SARIF.Run.Run
+ Data.SARIF.Run: instance GHC.Classes.Ord Data.SARIF.Run.RunColumnKind
+ Data.SARIF.Run: instance GHC.Show.Show Data.SARIF.Run.RunColumnKind
+ Data.SARIF.SpecialLocations: MkSpecialLocations :: Maybe ArtifactLocation -> Maybe (Map Text Value) -> SpecialLocations
+ Data.SARIF.SpecialLocations: [specialLocationsDisplayBase] :: SpecialLocations -> Maybe ArtifactLocation
+ Data.SARIF.SpecialLocations: [specialLocationsProperties] :: SpecialLocations -> Maybe (Map Text Value)
+ Data.SARIF.SpecialLocations: data SpecialLocations
+ Data.SARIF.SpecialLocations: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.SpecialLocations.SpecialLocations
+ Data.SARIF.SpecialLocations: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.SpecialLocations.SpecialLocations
+ Data.SARIF.SpecialLocations: instance GHC.Classes.Eq Data.SARIF.SpecialLocations.SpecialLocations
+ Data.SARIF.SpecialLocations: instance GHC.Classes.Ord Data.SARIF.SpecialLocations.SpecialLocations
+ Data.SARIF.SpecialLocations: instance GHC.Show.Show Data.SARIF.SpecialLocations.SpecialLocations
+ Data.SARIF.Stack: MkStack :: Maybe Message -> [StackFrame] -> Maybe (Map Text Value) -> Stack
+ Data.SARIF.Stack: [stackFrames] :: Stack -> [StackFrame]
+ Data.SARIF.Stack: [stackMessage] :: Stack -> Maybe Message
+ Data.SARIF.Stack: [stackProperties] :: Stack -> Maybe (Map Text Value)
+ Data.SARIF.Stack: data Stack
+ Data.SARIF.Stack: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Stack.Stack
+ Data.SARIF.Stack: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Stack.Stack
+ Data.SARIF.Stack: instance GHC.Classes.Eq Data.SARIF.Stack.Stack
+ Data.SARIF.Stack: instance GHC.Classes.Ord Data.SARIF.Stack.Stack
+ Data.SARIF.Stack: instance GHC.Show.Show Data.SARIF.Stack.Stack
+ Data.SARIF.StackFrame: MkStackFrame :: Maybe Location -> Maybe Text -> Maybe Integer -> Maybe [Text] -> Maybe (Map Text Value) -> StackFrame
+ Data.SARIF.StackFrame: [stackFrameLocation] :: StackFrame -> Maybe Location
+ Data.SARIF.StackFrame: [stackFrameModule] :: StackFrame -> Maybe Text
+ Data.SARIF.StackFrame: [stackFrameParameters] :: StackFrame -> Maybe [Text]
+ Data.SARIF.StackFrame: [stackFrameProperties] :: StackFrame -> Maybe (Map Text Value)
+ Data.SARIF.StackFrame: [stackFrameThreadId] :: StackFrame -> Maybe Integer
+ Data.SARIF.StackFrame: data StackFrame
+ Data.SARIF.StackFrame: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.StackFrame.StackFrame
+ Data.SARIF.StackFrame: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.StackFrame.StackFrame
+ Data.SARIF.StackFrame: instance GHC.Classes.Eq Data.SARIF.StackFrame.StackFrame
+ Data.SARIF.StackFrame: instance GHC.Classes.Ord Data.SARIF.StackFrame.StackFrame
+ Data.SARIF.StackFrame: instance GHC.Show.Show Data.SARIF.StackFrame.StackFrame
+ Data.SARIF.Suppression: MkSuppression :: SuppressionKind -> Maybe SuppressionStatus -> Maybe Location -> Maybe UUID -> Maybe Text -> Maybe (Map Text Value) -> Suppression
+ Data.SARIF.Suppression: SuppressionAcceptedStatus :: SuppressionStatus
+ Data.SARIF.Suppression: SuppressionExternalKind :: SuppressionKind
+ Data.SARIF.Suppression: SuppressionInSourceKind :: SuppressionKind
+ Data.SARIF.Suppression: SuppressionRejectedStatus :: SuppressionStatus
+ Data.SARIF.Suppression: SuppressionUnderReviewStatus :: SuppressionStatus
+ Data.SARIF.Suppression: [suppressionGUID] :: Suppression -> Maybe UUID
+ Data.SARIF.Suppression: [suppressionJustification] :: Suppression -> Maybe Text
+ Data.SARIF.Suppression: [suppressionKind] :: Suppression -> SuppressionKind
+ Data.SARIF.Suppression: [suppressionLocation] :: Suppression -> Maybe Location
+ Data.SARIF.Suppression: [suppressionProperties] :: Suppression -> Maybe (Map Text Value)
+ Data.SARIF.Suppression: [suppressionStatus] :: Suppression -> Maybe SuppressionStatus
+ Data.SARIF.Suppression: data Suppression
+ Data.SARIF.Suppression: data SuppressionKind
+ Data.SARIF.Suppression: data SuppressionStatus
+ Data.SARIF.Suppression: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Suppression.Suppression
+ Data.SARIF.Suppression: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Suppression.SuppressionKind
+ Data.SARIF.Suppression: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.Suppression.SuppressionStatus
+ Data.SARIF.Suppression: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Suppression.Suppression
+ Data.SARIF.Suppression: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Suppression.SuppressionKind
+ Data.SARIF.Suppression: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.Suppression.SuppressionStatus
+ Data.SARIF.Suppression: instance GHC.Classes.Eq Data.SARIF.Suppression.Suppression
+ Data.SARIF.Suppression: instance GHC.Classes.Eq Data.SARIF.Suppression.SuppressionKind
+ Data.SARIF.Suppression: instance GHC.Classes.Eq Data.SARIF.Suppression.SuppressionStatus
+ Data.SARIF.Suppression: instance GHC.Classes.Ord Data.SARIF.Suppression.Suppression
+ Data.SARIF.Suppression: instance GHC.Classes.Ord Data.SARIF.Suppression.SuppressionKind
+ Data.SARIF.Suppression: instance GHC.Classes.Ord Data.SARIF.Suppression.SuppressionStatus
+ Data.SARIF.Suppression: instance GHC.Show.Show Data.SARIF.Suppression.Suppression
+ Data.SARIF.Suppression: instance GHC.Show.Show Data.SARIF.Suppression.SuppressionKind
+ Data.SARIF.Suppression: instance GHC.Show.Show Data.SARIF.Suppression.SuppressionStatus
+ Data.SARIF.ThreadFlow: MkThreadFlow :: Maybe Text -> Maybe Message -> Maybe (Map Text Text) -> Maybe (Map Text Text) -> [ThreadFlowLocation] -> Maybe (Map Text Value) -> ThreadFlow
+ Data.SARIF.ThreadFlow: [threadFlowId] :: ThreadFlow -> Maybe Text
+ Data.SARIF.ThreadFlow: [threadFlowImmutableState] :: ThreadFlow -> Maybe (Map Text Text)
+ Data.SARIF.ThreadFlow: [threadFlowInitialState] :: ThreadFlow -> Maybe (Map Text Text)
+ Data.SARIF.ThreadFlow: [threadFlowLocations] :: ThreadFlow -> [ThreadFlowLocation]
+ Data.SARIF.ThreadFlow: [threadFlowMessage] :: ThreadFlow -> Maybe Message
+ Data.SARIF.ThreadFlow: [threadFlowProperties] :: ThreadFlow -> Maybe (Map Text Value)
+ Data.SARIF.ThreadFlow: data ThreadFlow
+ Data.SARIF.ThreadFlow: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.ThreadFlow.ThreadFlow
+ Data.SARIF.ThreadFlow: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.ThreadFlow.ThreadFlow
+ Data.SARIF.ThreadFlow: instance GHC.Classes.Eq Data.SARIF.ThreadFlow.ThreadFlow
+ Data.SARIF.ThreadFlow: instance GHC.Classes.Ord Data.SARIF.ThreadFlow.ThreadFlow
+ Data.SARIF.ThreadFlow: instance GHC.Show.Show Data.SARIF.ThreadFlow.ThreadFlow
+ Data.SARIF.ThreadFlowLocation: MkThreadFlowLocation :: Maybe Integer -> Location -> Maybe Text -> Maybe Stack -> Maybe WebRequest -> Maybe WebResponse -> Maybe [ThreadFlowLocationKind] -> Maybe (Map Text MultiformatMessageString) -> Maybe Integer -> Maybe Integer -> Maybe UTCTime -> Maybe Integer -> Maybe [ReportingDescriptorReference] -> Maybe (Map Text Value) -> ThreadFlowLocation
+ Data.SARIF.ThreadFlowLocation: ThreadFlowEssentialImportance :: ThreadFlowImportance
+ Data.SARIF.ThreadFlowLocation: ThreadFlowImportantImportance :: ThreadFlowImportance
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationAcquireKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationBranchKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationCallKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationCautionKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationCustomKind :: Text -> ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationDangerKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationEnterKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationExitKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationFalseKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationFunctionKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationHandlerKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationImplicitKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationLockKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationMemoryKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationReleaseKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationResourceKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationReturnKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationScopeKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationTaintKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationTrueKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationUnknownKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationUnreachableKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowLocationValueKind :: ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: ThreadFlowUnimportantImportance :: ThreadFlowImportance
+ Data.SARIF.ThreadFlowLocation: [threadFlowLocationExecutionOrder] :: ThreadFlowLocation -> Maybe Integer
+ Data.SARIF.ThreadFlowLocation: [threadFlowLocationExecutionTimeUtc] :: ThreadFlowLocation -> Maybe UTCTime
+ Data.SARIF.ThreadFlowLocation: [threadFlowLocationImportance] :: ThreadFlowLocation -> Maybe Integer
+ Data.SARIF.ThreadFlowLocation: [threadFlowLocationIndex] :: ThreadFlowLocation -> Maybe Integer
+ Data.SARIF.ThreadFlowLocation: [threadFlowLocationKinds] :: ThreadFlowLocation -> Maybe [ThreadFlowLocationKind]
+ Data.SARIF.ThreadFlowLocation: [threadFlowLocationLocation] :: ThreadFlowLocation -> Location
+ Data.SARIF.ThreadFlowLocation: [threadFlowLocationModule] :: ThreadFlowLocation -> Maybe Text
+ Data.SARIF.ThreadFlowLocation: [threadFlowLocationNestingLevel] :: ThreadFlowLocation -> Maybe Integer
+ Data.SARIF.ThreadFlowLocation: [threadFlowLocationProperties] :: ThreadFlowLocation -> Maybe (Map Text Value)
+ Data.SARIF.ThreadFlowLocation: [threadFlowLocationStack] :: ThreadFlowLocation -> Maybe Stack
+ Data.SARIF.ThreadFlowLocation: [threadFlowLocationState] :: ThreadFlowLocation -> Maybe (Map Text MultiformatMessageString)
+ Data.SARIF.ThreadFlowLocation: [threadFlowLocationTaxa] :: ThreadFlowLocation -> Maybe [ReportingDescriptorReference]
+ Data.SARIF.ThreadFlowLocation: [threadFlowLocationWebRequest] :: ThreadFlowLocation -> Maybe WebRequest
+ Data.SARIF.ThreadFlowLocation: [threadFlowLocationWebResponse] :: ThreadFlowLocation -> Maybe WebResponse
+ Data.SARIF.ThreadFlowLocation: data ThreadFlowImportance
+ Data.SARIF.ThreadFlowLocation: data ThreadFlowLocation
+ Data.SARIF.ThreadFlowLocation: data ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.ThreadFlowLocation.ThreadFlowImportance
+ Data.SARIF.ThreadFlowLocation: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.ThreadFlowLocation.ThreadFlowLocation
+ Data.SARIF.ThreadFlowLocation: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.ThreadFlowLocation.ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.ThreadFlowLocation.ThreadFlowImportance
+ Data.SARIF.ThreadFlowLocation: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.ThreadFlowLocation.ThreadFlowLocation
+ Data.SARIF.ThreadFlowLocation: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.ThreadFlowLocation.ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: instance GHC.Classes.Eq Data.SARIF.ThreadFlowLocation.ThreadFlowImportance
+ Data.SARIF.ThreadFlowLocation: instance GHC.Classes.Eq Data.SARIF.ThreadFlowLocation.ThreadFlowLocation
+ Data.SARIF.ThreadFlowLocation: instance GHC.Classes.Eq Data.SARIF.ThreadFlowLocation.ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: instance GHC.Classes.Ord Data.SARIF.ThreadFlowLocation.ThreadFlowImportance
+ Data.SARIF.ThreadFlowLocation: instance GHC.Classes.Ord Data.SARIF.ThreadFlowLocation.ThreadFlowLocation
+ Data.SARIF.ThreadFlowLocation: instance GHC.Classes.Ord Data.SARIF.ThreadFlowLocation.ThreadFlowLocationKind
+ Data.SARIF.ThreadFlowLocation: instance GHC.Show.Show Data.SARIF.ThreadFlowLocation.ThreadFlowImportance
+ Data.SARIF.ThreadFlowLocation: instance GHC.Show.Show Data.SARIF.ThreadFlowLocation.ThreadFlowLocation
+ Data.SARIF.ThreadFlowLocation: instance GHC.Show.Show Data.SARIF.ThreadFlowLocation.ThreadFlowLocationKind
+ Data.SARIF.Tool: instance GHC.Classes.Ord Data.SARIF.Tool.Tool
+ Data.SARIF.ToolComponent: MkToolComponent :: Maybe UUID -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe UTCTime -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe MultiformatMessageString -> Maybe MultiformatMessageString -> Maybe Text -> Maybe (Map Text MultiformatMessageString) -> Maybe [ReportingDescriptor] -> Maybe [ReportingDescriptor] -> Maybe [ReportingDescriptor] -> Maybe [ToolComponentReference] -> Maybe TranslationMetadata -> Maybe [ArtifactLocation] -> Maybe [Text] -> Maybe Bool -> Maybe Text -> Maybe Text -> Maybe ToolComponentReference -> Maybe (Map Text Value) -> ToolComponent
+ Data.SARIF.ToolComponent: [toolComponentAssociatedComponent] :: ToolComponent -> Maybe ToolComponentReference
+ Data.SARIF.ToolComponent: [toolComponentContents] :: ToolComponent -> Maybe [Text]
+ Data.SARIF.ToolComponent: [toolComponentDownloadUri] :: ToolComponent -> Maybe Text
+ Data.SARIF.ToolComponent: [toolComponentFullDescription] :: ToolComponent -> Maybe MultiformatMessageString
+ Data.SARIF.ToolComponent: [toolComponentFullName] :: ToolComponent -> Maybe Text
+ Data.SARIF.ToolComponent: [toolComponentGUID] :: ToolComponent -> Maybe UUID
+ Data.SARIF.ToolComponent: [toolComponentGlobalMessageStrings] :: ToolComponent -> Maybe (Map Text MultiformatMessageString)
+ Data.SARIF.ToolComponent: [toolComponentInformationUri] :: ToolComponent -> Maybe Text
+ Data.SARIF.ToolComponent: [toolComponentIsComprehensive] :: ToolComponent -> Maybe Bool
+ Data.SARIF.ToolComponent: [toolComponentLanguage] :: ToolComponent -> Maybe Text
+ Data.SARIF.ToolComponent: [toolComponentLocalizedDataSemanticVersion] :: ToolComponent -> Maybe Text
+ Data.SARIF.ToolComponent: [toolComponentLocations] :: ToolComponent -> Maybe [ArtifactLocation]
+ Data.SARIF.ToolComponent: [toolComponentMinimumRequiredLocalizedDataSemanticVersion] :: ToolComponent -> Maybe Text
+ Data.SARIF.ToolComponent: [toolComponentName] :: ToolComponent -> Maybe Text
+ Data.SARIF.ToolComponent: [toolComponentNotifications] :: ToolComponent -> Maybe [ReportingDescriptor]
+ Data.SARIF.ToolComponent: [toolComponentOrganization] :: ToolComponent -> Maybe Text
+ Data.SARIF.ToolComponent: [toolComponentProductSuit] :: ToolComponent -> Maybe Text
+ Data.SARIF.ToolComponent: [toolComponentProduct] :: ToolComponent -> Maybe Text
+ Data.SARIF.ToolComponent: [toolComponentProperties] :: ToolComponent -> Maybe (Map Text Value)
+ Data.SARIF.ToolComponent: [toolComponentReleaseDateUtc] :: ToolComponent -> Maybe UTCTime
+ Data.SARIF.ToolComponent: [toolComponentRules] :: ToolComponent -> Maybe [ReportingDescriptor]
+ Data.SARIF.ToolComponent: [toolComponentSemanticVersion] :: ToolComponent -> Maybe Text
+ Data.SARIF.ToolComponent: [toolComponentShortDescription] :: ToolComponent -> Maybe MultiformatMessageString
+ Data.SARIF.ToolComponent: [toolComponentSupportedTaxonomies] :: ToolComponent -> Maybe [ToolComponentReference]
+ Data.SARIF.ToolComponent: [toolComponentTaxa] :: ToolComponent -> Maybe [ReportingDescriptor]
+ Data.SARIF.ToolComponent: [toolComponentTranslationMetadata] :: ToolComponent -> Maybe TranslationMetadata
+ Data.SARIF.ToolComponent: [toolComponentVersion] :: ToolComponent -> Maybe Text
+ Data.SARIF.ToolComponent: data ToolComponent
+ Data.SARIF.ToolComponent: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.ToolComponent.ToolComponent
+ Data.SARIF.ToolComponent: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.ToolComponent.ToolComponentContent
+ Data.SARIF.ToolComponent: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.ToolComponent.ToolComponent
+ Data.SARIF.ToolComponent: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.ToolComponent.ToolComponentContent
+ Data.SARIF.ToolComponent: instance GHC.Classes.Eq Data.SARIF.ToolComponent.ToolComponent
+ Data.SARIF.ToolComponent: instance GHC.Classes.Eq Data.SARIF.ToolComponent.ToolComponentContent
+ Data.SARIF.ToolComponent: instance GHC.Classes.Ord Data.SARIF.ToolComponent.ToolComponent
+ Data.SARIF.ToolComponent: instance GHC.Classes.Ord Data.SARIF.ToolComponent.ToolComponentContent
+ Data.SARIF.ToolComponent: instance GHC.Show.Show Data.SARIF.ToolComponent.ToolComponent
+ Data.SARIF.ToolComponent: instance GHC.Show.Show Data.SARIF.ToolComponent.ToolComponentContent
+ Data.SARIF.ToolComponentReference: MkToolComponentReference :: Maybe Text -> Maybe Text -> Maybe UUID -> Maybe (Map Text Value) -> ToolComponentReference
+ Data.SARIF.ToolComponentReference: [toolComponentReferenceGuid] :: ToolComponentReference -> Maybe UUID
+ Data.SARIF.ToolComponentReference: [toolComponentReferenceIndex] :: ToolComponentReference -> Maybe Text
+ Data.SARIF.ToolComponentReference: [toolComponentReferenceName] :: ToolComponentReference -> Maybe Text
+ Data.SARIF.ToolComponentReference: [toolComponentReferenceProperties] :: ToolComponentReference -> Maybe (Map Text Value)
+ Data.SARIF.ToolComponentReference: data ToolComponentReference
+ Data.SARIF.ToolComponentReference: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.ToolComponentReference.ToolComponentReference
+ Data.SARIF.ToolComponentReference: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.ToolComponentReference.ToolComponentReference
+ Data.SARIF.ToolComponentReference: instance GHC.Classes.Eq Data.SARIF.ToolComponentReference.ToolComponentReference
+ Data.SARIF.ToolComponentReference: instance GHC.Classes.Ord Data.SARIF.ToolComponentReference.ToolComponentReference
+ Data.SARIF.ToolComponentReference: instance GHC.Show.Show Data.SARIF.ToolComponentReference.ToolComponentReference
+ Data.SARIF.TranslationMetadata: MkTranslationMetadata :: Text -> Maybe Text -> Maybe MultiformatMessageString -> Maybe MultiformatMessageString -> Maybe Text -> Maybe Text -> Maybe (Map Text Value) -> TranslationMetadata
+ Data.SARIF.TranslationMetadata: [translationMetadataDownloadUri] :: TranslationMetadata -> Maybe Text
+ Data.SARIF.TranslationMetadata: [translationMetadataFullDescription] :: TranslationMetadata -> Maybe MultiformatMessageString
+ Data.SARIF.TranslationMetadata: [translationMetadataFullName] :: TranslationMetadata -> Maybe Text
+ Data.SARIF.TranslationMetadata: [translationMetadataInformationUri] :: TranslationMetadata -> Maybe Text
+ Data.SARIF.TranslationMetadata: [translationMetadataName] :: TranslationMetadata -> Text
+ Data.SARIF.TranslationMetadata: [translationMetadataProperties] :: TranslationMetadata -> Maybe (Map Text Value)
+ Data.SARIF.TranslationMetadata: [translationMetadataShortDescription] :: TranslationMetadata -> Maybe MultiformatMessageString
+ Data.SARIF.TranslationMetadata: data TranslationMetadata
+ Data.SARIF.TranslationMetadata: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.TranslationMetadata.TranslationMetadata
+ Data.SARIF.TranslationMetadata: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.TranslationMetadata.TranslationMetadata
+ Data.SARIF.TranslationMetadata: instance GHC.Classes.Eq Data.SARIF.TranslationMetadata.TranslationMetadata
+ Data.SARIF.TranslationMetadata: instance GHC.Classes.Ord Data.SARIF.TranslationMetadata.TranslationMetadata
+ Data.SARIF.TranslationMetadata: instance GHC.Show.Show Data.SARIF.TranslationMetadata.TranslationMetadata
+ Data.SARIF.VersionControlDetails: MkVersionControlDetails :: Text -> Text -> Maybe Text -> Maybe Text -> Maybe Text -> Maybe ArtifactLocation -> Maybe (Map Text Value) -> VersionControlDetails
+ Data.SARIF.VersionControlDetails: [versionControlDetailsAsOfTimeUtc] :: VersionControlDetails -> Maybe Text
+ Data.SARIF.VersionControlDetails: [versionControlDetailsBranch] :: VersionControlDetails -> Maybe Text
+ Data.SARIF.VersionControlDetails: [versionControlDetailsMappedTo] :: VersionControlDetails -> Maybe ArtifactLocation
+ Data.SARIF.VersionControlDetails: [versionControlDetailsProperties] :: VersionControlDetails -> Maybe (Map Text Value)
+ Data.SARIF.VersionControlDetails: [versionControlDetailsRepositoryUri] :: VersionControlDetails -> Text
+ Data.SARIF.VersionControlDetails: [versionControlDetailsRevisionId] :: VersionControlDetails -> Text
+ Data.SARIF.VersionControlDetails: [versionControlDetailsRevisionTag] :: VersionControlDetails -> Maybe Text
+ Data.SARIF.VersionControlDetails: data VersionControlDetails
+ Data.SARIF.VersionControlDetails: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.VersionControlDetails.VersionControlDetails
+ Data.SARIF.VersionControlDetails: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.VersionControlDetails.VersionControlDetails
+ Data.SARIF.VersionControlDetails: instance GHC.Classes.Eq Data.SARIF.VersionControlDetails.VersionControlDetails
+ Data.SARIF.VersionControlDetails: instance GHC.Classes.Ord Data.SARIF.VersionControlDetails.VersionControlDetails
+ Data.SARIF.VersionControlDetails: instance GHC.Show.Show Data.SARIF.VersionControlDetails.VersionControlDetails
+ Data.SARIF.WebRequest: MkWebRequest :: Maybe Integer -> Text -> Text -> Text -> Text -> Map Text Text -> Maybe (Map Text Text) -> Maybe ArtifactContent -> Maybe (Map Text Value) -> WebRequest
+ Data.SARIF.WebRequest: [webRequestBody] :: WebRequest -> Maybe ArtifactContent
+ Data.SARIF.WebRequest: [webRequestHeaders] :: WebRequest -> Map Text Text
+ Data.SARIF.WebRequest: [webRequestIndex] :: WebRequest -> Maybe Integer
+ Data.SARIF.WebRequest: [webRequestMethod] :: WebRequest -> Text
+ Data.SARIF.WebRequest: [webRequestParameters] :: WebRequest -> Maybe (Map Text Text)
+ Data.SARIF.WebRequest: [webRequestProperties] :: WebRequest -> Maybe (Map Text Value)
+ Data.SARIF.WebRequest: [webRequestProtocol] :: WebRequest -> Text
+ Data.SARIF.WebRequest: [webRequestTarget] :: WebRequest -> Text
+ Data.SARIF.WebRequest: [webRequestVersion] :: WebRequest -> Text
+ Data.SARIF.WebRequest: data WebRequest
+ Data.SARIF.WebRequest: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.WebRequest.WebRequest
+ Data.SARIF.WebRequest: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.WebRequest.WebRequest
+ Data.SARIF.WebRequest: instance GHC.Classes.Eq Data.SARIF.WebRequest.WebRequest
+ Data.SARIF.WebRequest: instance GHC.Classes.Ord Data.SARIF.WebRequest.WebRequest
+ Data.SARIF.WebRequest: instance GHC.Show.Show Data.SARIF.WebRequest.WebRequest
+ Data.SARIF.WebResponse: MkWebResponse :: Maybe Integer -> Text -> Text -> Integer -> Text -> Map Text Text -> Maybe ArtifactContent -> Maybe Bool -> Maybe (Map Text Value) -> WebResponse
+ Data.SARIF.WebResponse: [webResponseBody] :: WebResponse -> Maybe ArtifactContent
+ Data.SARIF.WebResponse: [webResponseHeaders] :: WebResponse -> Map Text Text
+ Data.SARIF.WebResponse: [webResponseIndex] :: WebResponse -> Maybe Integer
+ Data.SARIF.WebResponse: [webResponseNoResponseReceived] :: WebResponse -> Maybe Bool
+ Data.SARIF.WebResponse: [webResponseProperties] :: WebResponse -> Maybe (Map Text Value)
+ Data.SARIF.WebResponse: [webResponseProtocol] :: WebResponse -> Text
+ Data.SARIF.WebResponse: [webResponseReasonPhrase] :: WebResponse -> Text
+ Data.SARIF.WebResponse: [webResponseStatusCode] :: WebResponse -> Integer
+ Data.SARIF.WebResponse: [webResponseVersion] :: WebResponse -> Text
+ Data.SARIF.WebResponse: data WebResponse
+ Data.SARIF.WebResponse: instance Data.Aeson.Types.FromJSON.FromJSON Data.SARIF.WebResponse.WebResponse
+ Data.SARIF.WebResponse: instance Data.Aeson.Types.ToJSON.ToJSON Data.SARIF.WebResponse.WebResponse
+ Data.SARIF.WebResponse: instance GHC.Classes.Eq Data.SARIF.WebResponse.WebResponse
+ Data.SARIF.WebResponse: instance GHC.Classes.Ord Data.SARIF.WebResponse.WebResponse
+ Data.SARIF.WebResponse: instance GHC.Show.Show Data.SARIF.WebResponse.WebResponse
- Data.Aeson.Optional: class GToJSON' enc arity (f :: TYPE LiftedRep -> Type)
+ Data.Aeson.Optional: class GToJSON' enc arity (f :: Type -> Type)
- Data.Aeson.Optional: class KeyValue kv
+ Data.Aeson.Optional: class KeyValue e kv | kv -> e
- Data.Aeson.Optional: class ToJSON1 (f :: TYPE LiftedRep -> TYPE LiftedRep)
+ Data.Aeson.Optional: class ToJSON1 (f :: Type -> Type)
- Data.Aeson.Optional: class ToJSON2 (f :: TYPE LiftedRep -> TYPE LiftedRep -> TYPE LiftedRep)
+ Data.Aeson.Optional: class ToJSON2 (f :: Type -> Type -> Type)
- Data.Aeson.Optional: genericLiftParseJSON :: (Generic1 f, GFromJSON One (Rep1 f)) => Options -> (Value -> Parser a) -> (Value -> Parser [a]) -> Value -> Parser (f a)
+ Data.Aeson.Optional: genericLiftParseJSON :: (Generic1 f, GFromJSON One (Rep1 f)) => Options -> Maybe a -> (Value -> Parser a) -> (Value -> Parser [a]) -> Value -> Parser (f a)
- Data.Aeson.Optional: genericLiftToEncoding :: (Generic1 f, GToJSON' Encoding One (Rep1 f)) => Options -> (a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
+ Data.Aeson.Optional: genericLiftToEncoding :: (Generic1 f, GToJSON' Encoding One (Rep1 f)) => Options -> (a -> Bool) -> (a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
- Data.Aeson.Optional: genericLiftToJSON :: (Generic1 f, GToJSON' Value One (Rep1 f)) => Options -> (a -> Value) -> ([a] -> Value) -> f a -> Value
+ Data.Aeson.Optional: genericLiftToJSON :: (Generic1 f, GToJSON' Value One (Rep1 f)) => Options -> (a -> Bool) -> (a -> Value) -> ([a] -> Value) -> f a -> Value
- Data.Aeson.Optional: liftParseJSON :: FromJSON1 f => (Value -> Parser a) -> (Value -> Parser [a]) -> Value -> Parser (f a)
+ Data.Aeson.Optional: liftParseJSON :: FromJSON1 f => Maybe a -> (Value -> Parser a) -> (Value -> Parser [a]) -> Value -> Parser (f a)
- Data.Aeson.Optional: liftParseJSON2 :: FromJSON2 f => (Value -> Parser a) -> (Value -> Parser [a]) -> (Value -> Parser b) -> (Value -> Parser [b]) -> Value -> Parser (f a b)
+ Data.Aeson.Optional: liftParseJSON2 :: FromJSON2 f => Maybe a -> (Value -> Parser a) -> (Value -> Parser [a]) -> Maybe b -> (Value -> Parser b) -> (Value -> Parser [b]) -> Value -> Parser (f a b)
- Data.Aeson.Optional: liftParseJSONList :: FromJSON1 f => (Value -> Parser a) -> (Value -> Parser [a]) -> Value -> Parser [f a]
+ Data.Aeson.Optional: liftParseJSONList :: FromJSON1 f => Maybe a -> (Value -> Parser a) -> (Value -> Parser [a]) -> Value -> Parser [f a]
- Data.Aeson.Optional: liftParseJSONList2 :: FromJSON2 f => (Value -> Parser a) -> (Value -> Parser [a]) -> (Value -> Parser b) -> (Value -> Parser [b]) -> Value -> Parser [f a b]
+ Data.Aeson.Optional: liftParseJSONList2 :: FromJSON2 f => Maybe a -> (Value -> Parser a) -> (Value -> Parser [a]) -> Maybe b -> (Value -> Parser b) -> (Value -> Parser [b]) -> Value -> Parser [f a b]
- Data.Aeson.Optional: liftToEncoding :: ToJSON1 f => (a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
+ Data.Aeson.Optional: liftToEncoding :: ToJSON1 f => (a -> Bool) -> (a -> Encoding) -> ([a] -> Encoding) -> f a -> Encoding
- Data.Aeson.Optional: liftToEncoding2 :: ToJSON2 f => (a -> Encoding) -> ([a] -> Encoding) -> (b -> Encoding) -> ([b] -> Encoding) -> f a b -> Encoding
+ Data.Aeson.Optional: liftToEncoding2 :: ToJSON2 f => (a -> Bool) -> (a -> Encoding) -> ([a] -> Encoding) -> (b -> Bool) -> (b -> Encoding) -> ([b] -> Encoding) -> f a b -> Encoding
- Data.Aeson.Optional: liftToEncodingList :: ToJSON1 f => (a -> Encoding) -> ([a] -> Encoding) -> [f a] -> Encoding
+ Data.Aeson.Optional: liftToEncodingList :: ToJSON1 f => (a -> Bool) -> (a -> Encoding) -> ([a] -> Encoding) -> [f a] -> Encoding
- Data.Aeson.Optional: liftToEncodingList2 :: ToJSON2 f => (a -> Encoding) -> ([a] -> Encoding) -> (b -> Encoding) -> ([b] -> Encoding) -> [f a b] -> Encoding
+ Data.Aeson.Optional: liftToEncodingList2 :: ToJSON2 f => (a -> Bool) -> (a -> Encoding) -> ([a] -> Encoding) -> (b -> Bool) -> (b -> Encoding) -> ([b] -> Encoding) -> [f a b] -> Encoding
- Data.Aeson.Optional: liftToJSON :: ToJSON1 f => (a -> Value) -> ([a] -> Value) -> f a -> Value
+ Data.Aeson.Optional: liftToJSON :: ToJSON1 f => (a -> Bool) -> (a -> Value) -> ([a] -> Value) -> f a -> Value
- Data.Aeson.Optional: liftToJSON2 :: ToJSON2 f => (a -> Value) -> ([a] -> Value) -> (b -> Value) -> ([b] -> Value) -> f a b -> Value
+ Data.Aeson.Optional: liftToJSON2 :: ToJSON2 f => (a -> Bool) -> (a -> Value) -> ([a] -> Value) -> (b -> Bool) -> (b -> Value) -> ([b] -> Value) -> f a b -> Value
- Data.Aeson.Optional: liftToJSONList :: ToJSON1 f => (a -> Value) -> ([a] -> Value) -> [f a] -> Value
+ Data.Aeson.Optional: liftToJSONList :: ToJSON1 f => (a -> Bool) -> (a -> Value) -> ([a] -> Value) -> [f a] -> Value
- Data.Aeson.Optional: liftToJSONList2 :: ToJSON2 f => (a -> Value) -> ([a] -> Value) -> (b -> Value) -> ([b] -> Value) -> [f a b] -> Value
+ Data.Aeson.Optional: liftToJSONList2 :: ToJSON2 f => (a -> Bool) -> (a -> Value) -> ([a] -> Value) -> (b -> Bool) -> (b -> Value) -> ([b] -> Value) -> [f a b] -> Value
- Data.SARIF.Artifact: MkArtifact :: ArtifactLocation -> Maybe Text -> Artifact
+ Data.SARIF.Artifact: MkArtifact :: Maybe ArtifactLocation -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe [ArtifactRole] -> Maybe Text -> Maybe ArtifactContent -> Maybe Text -> Maybe Text -> Maybe [(Text, Text)] -> Maybe Text -> Maybe Message -> Maybe (Map Text Value) -> Artifact
- Data.SARIF.Artifact: [artifactLocation] :: Artifact -> ArtifactLocation
+ Data.SARIF.Artifact: [artifactLocation] :: Artifact -> Maybe ArtifactLocation
- Data.SARIF.Location: MkLocation :: Maybe PhysicalLocation -> Location
+ Data.SARIF.Location: MkLocation :: Maybe Integer -> Maybe PhysicalLocation -> Maybe [LogicalLocation] -> Maybe Message -> Maybe [Region] -> Maybe [LocationRelationship] -> Maybe (Map Text Value) -> Location
- Data.SARIF.Log: MkLog :: Text -> [Run] -> Log
+ Data.SARIF.Log: MkLog :: Text -> Maybe Text -> Maybe [Run] -> Maybe ExternalPropertyFileReferences -> Log
- Data.SARIF.Log: [logRuns] :: Log -> [Run]
+ Data.SARIF.Log: [logRuns] :: Log -> Maybe [Run]
- Data.SARIF.MultiformatMessageString: MkMultiformatMessageString :: Text -> Maybe Text -> MultiformatMessageString
+ Data.SARIF.MultiformatMessageString: MkMultiformatMessageString :: Text -> Maybe Text -> Maybe (Map Text Value) -> MultiformatMessageString
- Data.SARIF.ReportingDescriptor: MkReportingDescriptor :: Text -> Maybe Text -> Maybe MultiformatMessageString -> Maybe MultiformatMessageString -> Maybe Text -> Maybe MultiformatMessageString -> Maybe ReportingConfiguration -> Map Text Value -> ReportingDescriptor
+ Data.SARIF.ReportingDescriptor: MkReportingDescriptor :: Text -> Maybe [Text] -> Maybe UUID -> Maybe [UUID] -> Maybe Text -> Maybe [Text] -> Maybe MultiformatMessageString -> Maybe MultiformatMessageString -> Maybe (Map Text MultiformatMessageString) -> Maybe Text -> Maybe MultiformatMessageString -> Maybe ReportingConfiguration -> Maybe ReportingDescriptorRelationship -> Maybe (Map Text Value) -> ReportingDescriptor
- Data.SARIF.Result: MkResult :: Text -> MultiformatMessageString -> [Location] -> Maybe Level -> Result
+ Data.SARIF.Result: MkResult :: Maybe UUID -> Maybe UUID -> Text -> Maybe Int -> Maybe ReportingDescriptorReference -> Maybe [ReportingDescriptorReference] -> Maybe ResultKind -> Maybe ResultLevel -> Message -> [Location] -> Maybe ArtifactLocation -> Maybe WebRequest -> Maybe WebResponse -> Maybe (Map Text Text) -> Maybe (Map Text Text) -> Maybe [CodeFlow] -> Maybe [Graph] -> Maybe [GraphTraversal] -> Maybe [Stack] -> Maybe [Location] -> Maybe [Suppression] -> Maybe ResultBaselineState -> Maybe Double -> Maybe [Attachment] -> Maybe [Text] -> Maybe Text -> Maybe ResultProvenance -> Maybe [Fix] -> Maybe Int -> Maybe (Map Text Value) -> Result
- Data.SARIF.Result: [resultLevel] :: Result -> Maybe Level
+ Data.SARIF.Result: [resultLevel] :: Result -> Maybe ResultLevel
- Data.SARIF.Result: [resultMessage] :: Result -> MultiformatMessageString
+ Data.SARIF.Result: [resultMessage] :: Result -> Message
- Data.SARIF.Run: MkRun :: Tool -> [Artifact] -> [Result] -> Run
+ Data.SARIF.Run: MkRun :: Maybe ExternalPropertyFileReferences -> Maybe AutomationDetails -> Maybe [AutomationDetails] -> Maybe Text -> Maybe Tool -> Maybe Text -> Maybe [ToolComponent] -> Maybe [ToolComponent] -> Maybe [ToolComponent] -> Maybe [Invocation] -> Maybe Conversion -> Maybe VersionControlDetails -> Maybe (Map Text ArtifactLocation) -> Maybe [Artifact] -> Maybe [SpecialLocations] -> Maybe [LogicalLocation] -> Maybe [Address] -> Maybe [ThreadFlowLocation] -> Maybe [Graph] -> Maybe [WebRequest] -> Maybe [WebResponse] -> Maybe [Result] -> Maybe Text -> Maybe Text -> Maybe [Text] -> Maybe RunColumnKind -> Maybe [Text] -> Maybe (Map Text Value) -> Run
- Data.SARIF.Run: [runArtifacts] :: Run -> [Artifact]
+ Data.SARIF.Run: [runArtifacts] :: Run -> Maybe [Artifact]
- Data.SARIF.Run: [runResults] :: Run -> [Result]
+ Data.SARIF.Run: [runResults] :: Run -> Maybe [Result]
- Data.SARIF.Run: [runTool] :: Run -> Tool
+ Data.SARIF.Run: [runTool] :: Run -> Maybe Tool
- Data.SARIF.Tool: MkTool :: ToolComponent -> [ToolComponent] -> Tool
+ Data.SARIF.Tool: MkTool :: ToolComponent -> Maybe [ToolComponent] -> Tool
- Data.SARIF.Tool: [toolExtensions] :: Tool -> [ToolComponent]
+ Data.SARIF.Tool: [toolExtensions] :: Tool -> Maybe [ToolComponent]

Files

CHANGELOG.md view
@@ -1,5 +1,9 @@ # Changelog for `sarif` +## 0.2 - 1 November 2026++* Added Aeson instances for all objects listed in the SARIF v2.1.0 specification. [#5](https://github.com/mbg/sarif/pull/5) by [@lllssskkk](https://github.com/lllssskkk)+ ## 0.1 - 22 December 2022  * First release with an initial implementation of some key aspects of the SARIF specification
README.md view
@@ -1,3 +1,14 @@ # SARIF implementation for Haskell +![GitHub](https://img.shields.io/github/license/mbg/sarif)+![Haskell CI](https://github.com/mbg/sarif/actions/workflows/build.yml/badge.svg?branch=main)+![stackage-nightly](https://github.com/mbg/sarif/actions/workflows/stackage-nightly.yml/badge.svg?branch=main)+[![Hackage](https://img.shields.io/hackage/v/sarif)](https://hackage.haskell.org/package/sarif)+ This Haskell library provides types and JSON instances for the [Static Analysis Results Interchange Format (SARIF)](https://sarifweb.azurewebsites.net). Static analysis tools written in Haskell may use this library to export their results which can then be consumed by e.g. [GitHub Code Scanning](https://docs.github.com/en/code-security/code-scanning/integrating-with-code-scanning).++## References++-   [SARIF website](https://sarifweb.azurewebsites.net)+-   [SARIF specification](https://docs.oasis-open.org/sarif/sarif/v2.1.0/sarif-v2.1.0.pdf)+-   [SARIF tutorials](https://github.com/microsoft/sarif-tutorials/)
sarif.cabal view
@@ -1,11 +1,11 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.35.1.+-- This file has been generated from package.yaml by hpack version 0.39.6. -- -- see: https://github.com/sol/hpack  name:           sarif-version:        0.1+version:        0.2 synopsis:       SARIF implementation for Haskell description:    Provides types and JSON instances for the Static Analysis Results Interchange Format (SARIF). category:       Data@@ -29,15 +29,59 @@   exposed-modules:       Data.Aeson.Optional       Data.SARIF+      Data.SARIF.Address       Data.SARIF.Artifact+      Data.SARIF.ArtifactChange+      Data.SARIF.ArtifactContent+      Data.SARIF.ArtifactLocation+      Data.SARIF.Attachment+      Data.SARIF.AutomationDetails+      Data.SARIF.CodeFlow+      Data.SARIF.ConfigurationOverride+      Data.SARIF.Conversion+      Data.SARIF.Edge+      Data.SARIF.EdgeTraversal+      Data.SARIF.Exception+      Data.SARIF.ExternalProperties+      Data.SARIF.ExternalPropertyFileReference+      Data.SARIF.ExternalPropertyFileReferences+      Data.SARIF.Fix+      Data.SARIF.Graph+      Data.SARIF.GraphTraversal+      Data.SARIF.Invocation       Data.SARIF.Level       Data.SARIF.Location+      Data.SARIF.LocationRelationship       Data.SARIF.Log+      Data.SARIF.LogicalLocation+      Data.SARIF.Message       Data.SARIF.MultiformatMessageString+      Data.SARIF.Node+      Data.SARIF.Notification+      Data.SARIF.PhysicalLocation+      Data.SARIF.Rectangle+      Data.SARIF.Region+      Data.SARIF.Replacement+      Data.SARIF.ReportingConfiguration       Data.SARIF.ReportingDescriptor+      Data.SARIF.ReportingDescriptorReference+      Data.SARIF.ReportingDescriptorRelationship       Data.SARIF.Result+      Data.SARIF.ResultProvenance       Data.SARIF.Run+      Data.SARIF.SpecialLocations+      Data.SARIF.Stack+      Data.SARIF.StackFrame+      Data.SARIF.Suppression+      Data.SARIF.ThreadFlow+      Data.SARIF.ThreadFlowLocation       Data.SARIF.Tool+      Data.SARIF.ToolComponent+      Data.SARIF.ToolComponentReference+      Data.SARIF.TranslationMetadata+      Data.SARIF.VersionControlDetails+      Data.SARIF.WebRequest+      Data.SARIF.WebResponse   other-modules:       Paths_sarif   hs-source-dirs:@@ -47,6 +91,7 @@       DeriveGeneric       OverloadedStrings       RecordWildCards+      LambdaCase   ghc-options: -Wall   build-depends:       aeson@@ -54,5 +99,6 @@     , bytestring     , containers     , text+    , time     , uuid-types   default-language: Haskell2010
src/Data/Aeson/Optional.hs view
@@ -19,8 +19,8 @@ --------------------------------------------------------------------------------  import Data.Aeson as Aeson hiding (object, (.=))-import Data.Aeson.Types (Pair) import qualified Data.Aeson as JSON (object)+import Data.Aeson.Types (Pair) import Data.Maybe #if !MIN_VERSION_aeson(2,0,0) import Data.Text
src/Data/SARIF.hs view
@@ -7,20 +7,64 @@  -- | Re-exports all modules from this library. You probably want to import -- this module as qualified.-module Data.SARIF (-    module SARIF-) where+module Data.SARIF+  ( module SARIF,+  )+where  -------------------------------------------------------------------------------- +import Data.SARIF.Address as SARIF import Data.SARIF.Artifact as SARIF+import Data.SARIF.ArtifactChange as SARIF+import Data.SARIF.ArtifactContent as SARIF+import Data.SARIF.ArtifactLocation as SARIF+import Data.SARIF.Attachment as SARIF+import Data.SARIF.AutomationDetails as SARIF+import Data.SARIF.CodeFlow as SARIF+import Data.SARIF.ConfigurationOverride as SARIF+import Data.SARIF.Conversion as SARIF+import Data.SARIF.Edge as SARIF+import Data.SARIF.EdgeTraversal as SARIF+import Data.SARIF.Exception as SARIF+import Data.SARIF.ExternalPropertyFileReference as SARIF+import Data.SARIF.ExternalPropertyFileReferences as SARIF+import Data.SARIF.Fix as SARIF+import Data.SARIF.Graph as SARIF+import Data.SARIF.GraphTraversal as SARIF+import Data.SARIF.Invocation as SARIF import Data.SARIF.Level as SARIF import Data.SARIF.Location as SARIF+import Data.SARIF.LocationRelationship as SARIF import Data.SARIF.Log as SARIF+import Data.SARIF.LogicalLocation as SARIF+import Data.SARIF.Message as SARIF import Data.SARIF.MultiformatMessageString as SARIF+import Data.SARIF.Node as SARIF+import Data.SARIF.Notification as SARIF+import Data.SARIF.PhysicalLocation as SARIF+import Data.SARIF.Rectangle as SARIF+import Data.SARIF.Region as SARIF+import Data.SARIF.Replacement as SARIF+import Data.SARIF.ReportingConfiguration as SARIF import Data.SARIF.ReportingDescriptor as SARIF+import Data.SARIF.ReportingDescriptorReference as SARIF+import Data.SARIF.ReportingDescriptorRelationship as SARIF import Data.SARIF.Result as SARIF+import Data.SARIF.ResultProvenance as SARIF import Data.SARIF.Run as SARIF+import Data.SARIF.SpecialLocations as SARIF+import Data.SARIF.Stack as SARIF+import Data.SARIF.StackFrame as SARIF+import Data.SARIF.Suppression as SARIF+import Data.SARIF.ThreadFlow as SARIF+import Data.SARIF.ThreadFlowLocation as SARIF import Data.SARIF.Tool as SARIF+import Data.SARIF.ToolComponent as SARIF+import Data.SARIF.ToolComponentReference as SARIF+import Data.SARIF.TranslationMetadata as SARIF+import Data.SARIF.VersionControlDetails as SARIF+import Data.SARIF.WebRequest as SARIF+import Data.SARIF.WebResponse as SARIF  --------------------------------------------------------------------------------
+ src/Data/SARIF/Address.hs view
@@ -0,0 +1,115 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------+module Data.SARIF.Address+  ( Address (..),+  )+where++--------------------------------------------------------------------------------++import Data.Aeson.Optional+import Data.Map.Strict+import Data.Text++--------------------------------------------------------------------------------++data AddressKind+  = DataKind+  | HeaderKind+  | FunctionKind+  | InstructionKind+  | PageKind+  | SectionKind+  | SegmentKind+  | StackKind+  | ModuleKind+  | TableKind+  deriving (Eq, Ord, Show)++instance ToJSON AddressKind where+  toJSON DataKind = String "data"+  toJSON HeaderKind = String "header"+  toJSON FunctionKind = String "function"+  toJSON InstructionKind = String "instruction"+  toJSON PageKind = String "page"+  toJSON SectionKind = String "section"+  toJSON SegmentKind = String "segment"+  toJSON StackKind = String "stack"+  toJSON ModuleKind = String "module"+  toJSON TableKind = String "table"++instance FromJSON AddressKind where+  parseJSON = withText "AddressKind" $ \t ->+    case t of+      "data" -> pure DataKind+      "header" -> pure HeaderKind+      "function" -> pure FunctionKind+      "instruction" -> pure InstructionKind+      "page" -> pure PageKind+      "section" -> pure SectionKind+      "segment" -> pure SegmentKind+      "stack" -> pure StackKind+      "module" -> pure ModuleKind+      "table" -> pure TableKind+      _ -> fail $ "Unknown AddressKind: " ++ unpack t++--------------------------------------------------------------------------------++-- | Represents default configurations for `ReportingDescriptor` values. That is+-- properties which may be overriden by individual results.+data Address+  = MkAddress+      { -- | The index property of an Address object+        addressIndex :: Maybe Int+        -- | The absoluteAddress property of an Address object+      , addressAbsoluteAddress :: Maybe Integer+        -- | The relativeAddress property of an Address object+      , addressRelativeAddress :: Maybe Integer+        -- | The offsetFromParent property of an Address object+      , addressOffsetFromParent :: Maybe Integer+        -- | The length property of an Address object+      , addressLength :: Maybe Integer+        -- | The name property of an Address object+      , addressName :: Maybe Text+        -- | The fullyQualifiedName property of an Address object+      , addressFullyQualifiedName :: Maybe Text+        -- | The kind property of an Address object+      , addressKind :: Maybe AddressKind+        -- | The parentIndex property of an Address object+      , addressParentIndex :: Maybe Int+        -- | The properties property of an Address object+      , addressProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON Address where+  toJSON MkAddress {..} =+    object+      [ "index" .=? addressIndex,+        "absoluteAddress" .=? addressAbsoluteAddress,+        "relativeAddress" .=? addressRelativeAddress,+        "offsetFromParent" .=? addressOffsetFromParent,+        "length" .=? addressLength,+        "name" .=? addressName,+        "fullyQualifiedName" .=? addressFullyQualifiedName,+        "kind" .=? addressKind,+        "parentIndex" .=? addressParentIndex+      ]++instance FromJSON Address where+  parseJSON = withObject "Address" $ \obj ->+    MkAddress+      <$> obj .:? "index"+      <*> (obj .:? "absoluteAddress")+      <*> obj .:? "relativeAddress"+      <*> obj .:? "offsetFromParent"+      <*> obj .:? "length"+      <*> obj .:? "name"+      <*> obj .:? "fullyQualifiedName"+      <*> obj .:? "kind"+      <*> obj .:? "parentIndex"+      <*> obj .:? "properties"
src/Data/SARIF/Artifact.hs view
@@ -6,36 +6,173 @@ --------------------------------------------------------------------------------  -- | Provides the `Artifact` type to represent SARIF artifacts.-module Data.SARIF.Artifact (-    Artifact(..)-) where+module Data.SARIF.Artifact+  ( Artifact (..),+  )+where  --------------------------------------------------------------------------------  import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.ArtifactContent+import Data.SARIF.ArtifactLocation+import Data.SARIF.Message import Data.Text -import Data.SARIF.Location- -------------------------------------------------------------------------------- --- | An artifact represents e.g. a source file.-data Artifact = MkArtifact {-    -- | The location where the artifact was found.-    artifactLocation :: ArtifactLocation,-    -- | The mime type of the artifact.-    artifactMimeType :: Maybe Text-} deriving (Eq, Show)+data ArtifactRole+  = ArtifactAnalysisTargetRole+  | ArtifactAttachmentRole+  | ArtifactConversionSourceRole+  | ArtifactDebugOutputFileRole+  | ArtifactDirectoryRole+  | ArtifactDriverRole+  | ArtifactExtensionRole+  | ArtifactExternalPropertyFileRole+  | ArtifactMemoryContentsRole+  | ArtifactPolicyRole+  | ArtifactReferencedOnCommandLineRole+  | ArtifactRepositoryRootRole+  | ArtifactResponseFileRole+  | ArtifactResultFileRole+  | ArtifactStandardStreamRole+  | ArtifactTaxonomyRole+  | ArtifactToolSpecifiedConfigurationRole+  | ArtifactTracedFileRole+  | ArtifactTranslationRole+  | ArtifactUserSpecifiedConfigurationRole+  | ArtifactAddedRole+  | ArtifactDeletedRole+  | ArtifiedModifiedRole+  | ArtifactRenamedRole+  | ArtifactUncontrolledRole+  | ArtifactUnmodifiedRole+  deriving (Eq, Ord, Show) +instance ToJSON ArtifactRole where+  toJSON ArtifactAnalysisTargetRole = String "analysisTarget"+  toJSON ArtifactAttachmentRole = String "attachment"+  toJSON ArtifactConversionSourceRole = String "conversionSource"+  toJSON ArtifactDebugOutputFileRole = String "debugOutputFile"+  toJSON ArtifactDirectoryRole = String "directory"+  toJSON ArtifactDriverRole = String "driver"+  toJSON ArtifactExtensionRole = String "extension"+  toJSON ArtifactExternalPropertyFileRole = String "externalPropertyFile"+  toJSON ArtifactMemoryContentsRole = String "memoryContents"+  toJSON ArtifactPolicyRole = String "policy"+  toJSON ArtifactReferencedOnCommandLineRole = String "referencedOnCommandLine"+  toJSON ArtifactRepositoryRootRole = String "repositoryRoot"+  toJSON ArtifactResponseFileRole = String "responseFile"+  toJSON ArtifactResultFileRole = String "resultFile"+  toJSON ArtifactStandardStreamRole = String "standardStream"+  toJSON ArtifactTaxonomyRole = String "taxonomy"+  toJSON ArtifactToolSpecifiedConfigurationRole = String "toolSpecifiedConfiguration"+  toJSON ArtifactTracedFileRole = String "tracedFile"+  toJSON ArtifactTranslationRole = String "translation"+  toJSON ArtifactUserSpecifiedConfigurationRole = String "userSpecifiedConfiguration"+  toJSON ArtifactAddedRole = String "added"+  toJSON ArtifactDeletedRole = String "deleted"+  toJSON ArtifiedModifiedRole = String "modified"+  toJSON ArtifactRenamedRole = String "renamed"+  toJSON ArtifactUncontrolledRole = String "uncontrolled"+  toJSON ArtifactUnmodifiedRole = String "unmodified"++instance FromJSON ArtifactRole where+  parseJSON = withText "ArtifactRole" $ \case+    "analysisTarget" -> pure ArtifactAnalysisTargetRole+    "attachment" -> pure ArtifactAttachmentRole+    "conversionSource" -> pure ArtifactConversionSourceRole+    "debugOutputFile" -> pure ArtifactDebugOutputFileRole+    "directory" -> pure ArtifactDirectoryRole+    "driver" -> pure ArtifactDriverRole+    "extension" -> pure ArtifactExtensionRole+    "externalPropertyFile" -> pure ArtifactExternalPropertyFileRole+    "memoryContents" -> pure ArtifactMemoryContentsRole+    "policy" -> pure ArtifactPolicyRole+    "referencedOnCommandLine" -> pure ArtifactReferencedOnCommandLineRole+    "repositoryRoot" -> pure ArtifactRepositoryRootRole+    "responseFile" -> pure ArtifactResponseFileRole+    "resultFile" -> pure ArtifactResultFileRole+    "standardStream" -> pure ArtifactStandardStreamRole+    "taxonomy" -> pure ArtifactTaxonomyRole+    "toolSpecifiedConfiguration" -> pure ArtifactToolSpecifiedConfigurationRole+    "tracedFile" -> pure ArtifactTracedFileRole+    "translation" -> pure ArtifactTranslationRole+    "userSpecifiedConfiguration" -> pure ArtifactUserSpecifiedConfigurationRole+    "added" -> pure ArtifactAddedRole+    "deleted" -> pure ArtifactDeletedRole+    "modified" -> pure ArtifiedModifiedRole+    "renamed" -> pure ArtifactRenamedRole+    "uncontrolled" -> pure ArtifactUncontrolledRole+    "unmodified" -> pure ArtifactUnmodifiedRole+    other -> fail $ "Unknown ArtifactRole: " <> unpack other++data Artifact+  = MkArtifact+      { -- | The location where the artifact was found.+        artifactLocation :: Maybe ArtifactLocation+        -- | The parentIndex property of the artifact.+      , artifactParentIndex :: Maybe Int+        -- | The offset property of the artifact.+      , artifactOffset :: Maybe Int+        -- | The length property of the artifact.+      , artifactLength :: Maybe Int+        -- | The roles property of the artifact.+      , artifactRoles :: Maybe [ArtifactRole]+        -- | The mimeType property of the artifact.+      , artifactMimeType :: Maybe Text+        -- | The contents property of the artifact.+      , artifactContents :: Maybe ArtifactContent+        -- | The encoding property of the artifact.+      , artifactEncoding :: Maybe Text+        -- | The sourceLanguage property of the artifact.+      , artifactSourceLanguage :: Maybe Text+        -- | The hashes property of the artifact.+      , artifactHashes :: Maybe [(Text, Text)]+        -- | The lastModifiedTimeUtc property of the artifact.+      , artifactLastModifiedTimeUtc :: Maybe Text+        -- | The description property of the artifact.+      , artifactDescription :: Maybe Message+        -- | The properties property of an Artifact object+      , artifactProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)+ instance ToJSON Artifact where-    toJSON MkArtifact{..} = object-        [ "location" .= artifactLocation-        , "mimeType" .=? artifactMimeType-        ]+  toJSON MkArtifact {..} =+    object+      [ "location" .=? artifactLocation,+        "parentIndex" .=? artifactParentIndex,+        "offset" .=? artifactOffset,+        "length" .=? artifactLength,+        "roles" .=? artifactRoles,+        "mimeType" .=? artifactMimeType,+        "contents" .=? artifactContents,+        "encoding" .=? artifactEncoding,+        "sourceLanguage" .=? artifactSourceLanguage,+        "hashes" .=? artifactHashes,+        "lastModifiedTimeUtc" .=? artifactLastModifiedTimeUtc,+        "description" .=? artifactDescription,+        "properties" .=? artifactProperties+      ]  instance FromJSON Artifact where-    parseJSON = withObject "Artifact" $ \obj ->-        MkArtifact <$> obj .: "location"-                   <*> obj .:? "mimeType"+  parseJSON = withObject "Artifact" $ \v ->+    MkArtifact+      <$> v .:? "location"+      <*> v .:? "parentIndex"+      <*> v .:? "offset"+      <*> v .:? "length"+      <*> v .:? "roles"+      <*> v .:? "mimeType"+      <*> v .:? "contents"+      <*> v .:? "encoding"+      <*> v .:? "sourceLanguage"+      <*> v .:? "hashes"+      <*> v .:? "lastModifiedTimeUtc"+      <*> v .:? "description"+      <*> v .:? "properties" ---------------------------------------------------------------------------------+-- --------------------------------------------------------------------------------
+ src/Data/SARIF/ArtifactChange.hs view
@@ -0,0 +1,41 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `ArtifactChange` type to represent SARIF artifacts.+module Data.SARIF.ArtifactChange where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.ArtifactLocation+import Data.SARIF.Replacement+import Data.Text++data ArtifactChange+  = MkArtifactChange+      { -- | The artifactLocation property of the artifact change+        artifactChangeArtifactLocation :: ArtifactLocation+        -- | The replacement property of the artifact change+      , artifactChangeReplacementArtifacts :: [Replacement]+        -- | The properties property of an ArtifactChange object+      , artifactChangeProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON ArtifactChange where+  toJSON MkArtifactChange {..} =+    object+      [ "artifactLocation" .= artifactChangeArtifactLocation,+        "replacements" .= artifactChangeReplacementArtifacts,+        "properties" .=? artifactChangeProperties+      ]++instance FromJSON ArtifactChange where+  parseJSON = withObject "ArtifactChange" $ \obj ->+    MkArtifactChange+      <$> obj .: "artifactLocation"+      <*> obj .: "replacements"+      <*> obj .:? "properties"
+ src/Data/SARIF/ArtifactContent.hs view
@@ -0,0 +1,47 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `ArtifactContent` type to represent SARIF artifacts.+module Data.SARIF.ArtifactContent+  ( ArtifactContent (..),+  )+where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.MultiformatMessageString+import Data.Text++data ArtifactContent+  = MkArtifactContent+      { -- | The text property of an artifactContent object+        artifactContentText :: Maybe Text+        -- | The binary property of an artifactContent object+      , artifactContentBinary :: Maybe Text+        -- | The rendered property of an artifactContent object+      , artifactContentRendered :: Maybe MultiformatMessageString+        -- | The properties property of an ArtifactContent object+      , artifactContentProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON ArtifactContent where+  toJSON MkArtifactContent {..} =+    object+      [ "text" .=? artifactContentText,+        "binary" .=? artifactContentBinary,+        "rendered" .=? artifactContentRendered,+        "properties" .=? artifactContentProperties+      ]++instance FromJSON ArtifactContent where+  parseJSON = withObject "ArtifactContent" $ \obj ->+    MkArtifactContent+      <$> obj .: "text"+      <*> obj .:? "binary"+      <*> obj .:? "rendered"+      <*> obj .:? "properties"
+ src/Data/SARIF/ArtifactLocation.hs view
@@ -0,0 +1,52 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `ArtifactLocation` type to represent SARIF artifacts.+module Data.SARIF.ArtifactLocation+  ( ArtifactLocation (..),+  )+where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.Message+import Data.Text++data ArtifactLocation+  = MkArtifactLocation+      { -- | The uri property of an artifactLocation object+        artifactLocUri :: Maybe Text+        -- | The uriBasedId property of an artifactLocation object+      , artifactLocUriBaseId :: Maybe Text+        -- | The index property of an artifactLocation object+      , artifactLocIndex :: Maybe Int+        -- | The description property of an artifactLocation object+      , artifactLocDescription :: Maybe Message+        -- | The properties property of an ArtifactLocation object+      , artifactLocProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)+++instance ToJSON ArtifactLocation where+  toJSON MkArtifactLocation {..} =+    object+      [ "uri" .=? artifactLocUri,+        "uriBaseId" .=? artifactLocUriBaseId,+        "index" .=? artifactLocIndex,+        "description" .=? artifactLocDescription,+        "properties" .=? artifactLocProperties+      ]++instance FromJSON ArtifactLocation where+  parseJSON = withObject "ArtifactLocation" $ \obj ->+    MkArtifactLocation+      <$> (obj .:? "uri")+      <*> (obj .:? "uriBaseId")+      <*> obj .:? "index"+      <*> obj .:? "description"+      <*> obj .:? "properties"
+ src/Data/SARIF/Attachment.hs view
@@ -0,0 +1,51 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `Attachment` type to represent SARIF artifacts.+module Data.SARIF.Attachment where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.Location+import Data.SARIF.Message+import Data.SARIF.Rectangle+import Data.SARIF.Region+import Data.Text++data Attachment+  = MkAttachment+      { -- | The description property of the attachment+        attachmentDescription :: Maybe Message+        -- | The location property of the attachment+      , attachmentLocation :: Maybe Location+        -- | The region property of the attachment+      , attachmentRegion :: Maybe [Region]+        -- | The rectangle property of the attachment+      , attachmentRectangle :: Maybe [Rectangle]+        -- | The properties property of an Attachment object+      , attachmentProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON Attachment where+  toJSON MkAttachment {..} =+    object+      [ "description" .=? attachmentDescription,+        "location" .=? attachmentLocation,+        "region" .=? attachmentRegion,+        "rectangle" .=? attachmentRectangle,+        "properties" .=? attachmentProperties+      ]++instance FromJSON Attachment where+  parseJSON = withObject "Attachment" $ \obj ->+    MkAttachment+      <$> obj .:? "description"+      <*> obj .:? "location"+      <*> obj .:? "region"+      <*> obj .:? "rectangle"+      <*> obj .:? "properties"
+ src/Data/SARIF/AutomationDetails.hs view
@@ -0,0 +1,48 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `AutomationDetails` type to represent SARIF artifacts.+module Data.SARIF.AutomationDetails (AutomationDetails (..)) where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.Message+import Data.Text++data AutomationDetails+  = MkAutomationDetails+      { -- | The description property of the automation details+        automationDetailsDescription :: Maybe Message+        -- | The id property of the automation details+      , automationDetailsId :: Maybe Text+        -- | The guid property of the automation details+      , automationDetailsGuid :: Maybe Text+        -- | The correlationGuid property of the automation details+      , automationDetailsCorrelationGuid :: Maybe Text+        -- | The properties property of the automation details+      , automationDetailsProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON AutomationDetails where+  toJSON MkAutomationDetails {..} =+    object+      [ "description" .=? automationDetailsDescription,+        "id" .=? automationDetailsId,+        "guid" .=? automationDetailsGuid,+        "correlationGuid" .=? automationDetailsCorrelationGuid,+        "properties" .=? automationDetailsProperties+      ]++instance FromJSON AutomationDetails where+  parseJSON = withObject "AutomationDetails" $ \obj ->+    MkAutomationDetails+      <$> obj .:? "description"+      <*> obj .:? "id"+      <*> obj .:? "guid"+      <*> obj .:? "correlationGuid"+      <*> obj .:? "properties"
+ src/Data/SARIF/CodeFlow.hs view
@@ -0,0 +1,37 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `CodeFlow` type to represent SARIF artifacts.+module Data.SARIF.CodeFlow where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.ThreadFlow+import Data.Text++data CodeFlow+  = MkCodeFlow+      { codeFlowMessage :: Maybe Text+      , codeFlowThreadFlows :: [ThreadFlow]+      , codeFlowProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON CodeFlow where+  toJSON MkCodeFlow {..} =+    object+      [ "message" .=? codeFlowMessage,+        "threadFlows" .= codeFlowThreadFlows,+        "properties" .=? codeFlowProperties+      ]++instance FromJSON CodeFlow where+  parseJSON = withObject "CodeFlow" $ \obj ->+    MkCodeFlow+      <$> obj .:? "message"+      <*> obj .: "threadFlows"+      <*> obj .:? "properties"
+ src/Data/SARIF/ConfigurationOverride.hs view
@@ -0,0 +1,41 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `ConfigurationOverride` type to represent SARIF artifacts.+module Data.SARIF.ConfigurationOverride where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.ReportingConfiguration+import Data.SARIF.ReportingDescriptorReference+import Data.Text++data ConfigurationOverride+  = MkConfigurationOverride+      { -- | The descriptor property of the configuration override+        configurationOverrideDescriptor :: ReportingDescriptorReference+        -- | The configuration property of the configuration override+      , configurationOverrideConfiguration :: ReportingConfiguration+        -- | The properties property of the ConfigurationOverride object+      , configurationOverrideProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON ConfigurationOverride where+  toJSON MkConfigurationOverride {..} =+    object+      [ "descriptor" .= configurationOverrideDescriptor,+        "configuration" .= configurationOverrideConfiguration,+        "properties" .=? configurationOverrideProperties+      ]++instance FromJSON ConfigurationOverride where+  parseJSON = withObject "ConfigurationOverride" $ \obj ->+    MkConfigurationOverride+      <$> obj .: "descriptor"+      <*> obj .: "configuration"+      <*> obj .:? "properties"
+ src/Data/SARIF/Conversion.hs view
@@ -0,0 +1,46 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `Conversion` type to represent SARIF artifacts.+module Data.SARIF.Conversion where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.ArtifactLocation+import Data.SARIF.Invocation+import Data.SARIF.Tool+import Data.Text++data Conversion+  = MkConversion+      { -- | The tool property of the conversion+        conversionTool :: Tool+        -- | The invocation property of the conversion+      , conversionInvocation :: Maybe Invocation+        -- | The analysisToolLogFiles property of the conversion+      , conversionAnalysisToolLogFiles :: Maybe [ArtifactLocation]+        -- | The properties property of the Conversion object+      , conversionProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON Conversion where+  toJSON MkConversion {..} =+    object+      [ "tool" .= conversionTool,+        "invocation" .=? conversionInvocation,+        "analysisToolLogFiles" .=? conversionAnalysisToolLogFiles,+        "properties" .=? conversionProperties+      ]++instance FromJSON Conversion where+  parseJSON = withObject "Conversion" $ \obj ->+    MkConversion+      <$> obj .: "tool"+      <*> obj .:? "invocation"+      <*> obj .:? "analysisToolLogFiles"+      <*> obj .:? "properties"
+ src/Data/SARIF/Edge.hs view
@@ -0,0 +1,49 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `Edge` type to represent SARIF artifacts.+module Data.SARIF.Edge where++import Data.Aeson.Optional+import Data.Map+import Data.SARIF.Message+import Data.SARIF.Node+import Data.Text++data Edge+  = MkEdge+      { -- | The id property of the edge+        edgeId :: Text+        -- | The label property of the edge+      , edgeLabel :: Maybe Message+        -- | The sourceNodeId property of the edge+      , edgeSourceNodeId :: Node+        -- | The targetNodeId property of the edge+      , edgeTargetNodeId :: Node+        -- | The properties property of the Edge object+      , edgeProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON Edge where+  toJSON MkEdge {..} =+    object+      [ "id" .= edgeId,+        "label" .=? edgeLabel,+        "sourceNodeId" .= edgeSourceNodeId,+        "targetNodeId" .= edgeTargetNodeId,+        "properties" .=? edgeProperties+      ]++instance FromJSON Edge where+  parseJSON = withObject "Edge" $ \obj ->+    MkEdge+      <$> obj .: "id"+      <*> obj .:? "label"+      <*> obj .: "sourceNodeId"+      <*> obj .: "targetNodeId"+      <*> obj .:? "properties"
+ src/Data/SARIF/EdgeTraversal.hs view
@@ -0,0 +1,50 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `EdgeTraversal` type to represent SARIF artifacts.+module Data.SARIF.EdgeTraversal where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.Edge+import Data.SARIF.Message+import Data.SARIF.MultiformatMessageString+import Data.Text++data EdgeTraversal+  = MkEdgeTraversal+      { -- | The edgeId property of the edge traversal+        edgeTraversalEdgeId :: Edge+        -- | The message property of the edge traversal+      , edgeTraversalMessage :: Maybe Message+        -- | The finalState property of the edge traversal+      , edgeTraversalFinalState :: Maybe (Map Text MultiformatMessageString)+        -- | The stepOverEdgeCount property of the edge traversal+      , edgeTraversalStepOverEdgeCount :: Maybe Int+        -- | The properties property of the EdgeTraversal object+      , edgeTraversalProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON EdgeTraversal where+  toJSON MkEdgeTraversal {..} =+    object+      [ "edgeId" .= edgeTraversalEdgeId,+        "message" .=? edgeTraversalMessage,+        "finalState" .=? edgeTraversalFinalState,+        "stepOverEdgeCount" .=? edgeTraversalStepOverEdgeCount,+        "properties" .=? edgeTraversalProperties+      ]++instance FromJSON EdgeTraversal where+  parseJSON = withObject "EdgeTraversal" $ \obj ->+    MkEdgeTraversal+      <$> obj .: "edgeId"+      <*> obj .:? "message"+      <*> obj .:? "finalState"+      <*> obj .:? "stepOverEdgeCount"+      <*> obj .:? "properties"
+ src/Data/SARIF/Exception.hs view
@@ -0,0 +1,48 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `Exception` type to represent SARIF artifacts.+module Data.SARIF.Exception (Exception (..)) where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.Stack+import Data.Text++data Exception+  = MkException+      { -- | The kind property of the exception+        exceptionKind :: Text+        -- | The message property of the exception+      , exceptionMessage :: Text+        -- | The stack property of the exception+      , exceptionStack :: Maybe Stack+        -- | The innerExceptions property of the exception+      , exceptionInnerExceptions :: Maybe [Exception]+        -- | The properties property of the Exception object+      , exceptionProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON Exception where+  toJSON MkException {..} =+    object+      [ "kind" .= exceptionKind,+        "message" .= exceptionMessage,+        "stack" .=? exceptionStack,+        "innerExceptions" .=? exceptionInnerExceptions,+        "properties" .=? exceptionProperties+      ]++instance FromJSON Exception where+  parseJSON = withObject "Exception" $ \obj ->+    MkException+      <$> obj .: "kind"+      <*> obj .: "message"+      <*> obj .:? "stack"+      <*> obj .:? "innerExceptions"+      <*> obj .:? "properties"
+ src/Data/SARIF/ExternalProperties.hs view
@@ -0,0 +1,47 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `ExternalProperties` type to represent SARIF artifacts.+module Data.SARIF.ExternalProperties where++import Data.Aeson.Optional+import Data.SARIF.ExternalPropertyFileReferences+import Data.Text++data ExternalProperties+  = MkExternalProperties+      { -- | The schema property of the external properties+        externalPropertiesSchema :: Maybe Text+        -- | The version property of the external properties+      , externalPropertiesVersion :: Maybe Text+        -- | The guid property of the external properties+      , externalPropertiesGuid :: Text+        -- | The runGuid property of the external properties+      , externalPropertiesRunGuid :: Maybe Text+        -- | The properties property of the external properties+      , externalPropertiesProperties :: Maybe ExternalPropertyFileReferences+      }+  deriving (Eq, Ord, Show)++instance ToJSON ExternalProperties where+  toJSON MkExternalProperties {..} =+    object+      [ "$schema" .=? externalPropertiesSchema,+        "version" .=? externalPropertiesVersion,+        "guid" .= externalPropertiesGuid,+        "runGuid" .=? externalPropertiesRunGuid,+        "properties" .=? externalPropertiesProperties+      ]++instance FromJSON ExternalProperties where+  parseJSON = withObject "ExternalProperties" $ \obj ->+    MkExternalProperties+      <$> obj .:? "$schema"+      <*> obj .:? "version"+      <*> obj .: "guid"+      <*> obj .:? "runGuid"+      <*> obj .:? "properties"
+ src/Data/SARIF/ExternalPropertyFileReference.hs view
@@ -0,0 +1,44 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `ExternalPropertyFileReference` type to represent SARIF artifacts.+module Data.SARIF.ExternalPropertyFileReference where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.ArtifactLocation+import Data.Text++data ExternalPropertyFileReference+  = MkExternalPropertyFileReference+      { -- | The location property of the external property file reference+        externalPropertyFileReferenceLocation :: Maybe ArtifactLocation+        -- | The guid property of the external property file reference+      , externalPropertyFileReferenceGuid :: Maybe Text+        -- | The itemCount property of the external property file reference+      , externalPropertyFileReferenceItemCount :: Maybe Int+        -- | The properties property of the ExternalPropertyFileReference object+      , externalPropertyFileReferenceProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON ExternalPropertyFileReference where+  toJSON MkExternalPropertyFileReference {..} =+    object+      [ "location" .=? externalPropertyFileReferenceLocation,+        "guid" .=? externalPropertyFileReferenceGuid,+        "itemCount" .=? externalPropertyFileReferenceItemCount,+        "properties" .=? externalPropertyFileReferenceProperties+      ]++instance FromJSON ExternalPropertyFileReference where+  parseJSON = withObject "ExternalPropertyFileReference" $ \obj ->+    MkExternalPropertyFileReference+      <$> obj .:? "location"+      <*> obj .:? "guid"+      <*> obj .:? "itemCount"+      <*> obj .:? "properties"
+ src/Data/SARIF/ExternalPropertyFileReferences.hs view
@@ -0,0 +1,96 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `ExternalPropertyFileReferences` type to represent SARIF artifacts.+module Data.SARIF.ExternalPropertyFileReferences (ExternalPropertyFileReferences (..)) where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.ExternalPropertyFileReference+import Data.Text++data ExternalPropertyFileReferences+  = MkExternalPropertyFileReferences+      { -- | The addresses property of the external property file references+        externalPropertyFileReferencesAddresses :: Maybe [ExternalPropertyFileReference]+        -- | The artifacts property of the external property file references+      , externalPropertyFileReferencesArtifacts :: Maybe [ExternalPropertyFileReference]+        -- | The conversion property of the external property file references+      , externalPropertyFileReferencesConversion :: Maybe ExternalPropertyFileReference+        -- | The graphs property of the external property file references+      , externalPropertyFileReferencesGraphs :: Maybe [ExternalPropertyFileReference]+        -- | The invocations property of the external property file references+      , externalPropertyFileReferencesInvocations :: Maybe [ExternalPropertyFileReference]+        -- | The logicalLocations property of the external property file references+      , externalPropertyFileReferencesLogicalLocations :: Maybe [ExternalPropertyFileReference]+        -- | The policies property of the external property file references+      , externalPropertyFileReferencesPolicies :: Maybe [ExternalPropertyFileReference]+        -- | The externalizedProperties property of the external property file references+      , externalPropertyFileReferencesExternalizedProperties :: Maybe ExternalPropertyFileReference+        -- | The webRequests property of the external property file references+      , externalPropertyFileReferencesWebRequests :: Maybe [ExternalPropertyFileReference]+        -- | The webResponses property of the external property file references+      , externalPropertyFileReferencesWebResponses :: Maybe [ExternalPropertyFileReference]+        -- | The results property of the external property file references+      , externalPropertyFileReferencesResults :: Maybe [ExternalPropertyFileReference]+        -- | The taxonomies property of the external property file references+      , externalPropertyFileReferencesTaxonomies :: Maybe [ExternalPropertyFileReference]+        -- | The threadFlowLocations property of the external property file references+      , externalPropertyFileReferencesThreadFlowLocations :: Maybe [ExternalPropertyFileReference]+        -- | The translations property of the external property file references+      , externalPropertyFileReferencesTranslations :: Maybe [ExternalPropertyFileReference]+        -- | The driver property of the external property file references+      , externalPropertyFileReferencesDriver :: Maybe ExternalPropertyFileReference+        -- | The extensions property of the external property file references+      , externalPropertyFileReferencesExtensions :: Maybe [ExternalPropertyFileReference]+        -- | The properties property of the ExternalPropertyFileReferences object+      , externalPropertyFileReferencesProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON ExternalPropertyFileReferences where+  toJSON MkExternalPropertyFileReferences {..} =+    object+      [ "addresses" .=? externalPropertyFileReferencesAddresses,+        "artifacts" .=? externalPropertyFileReferencesArtifacts,+        "conversion" .=? externalPropertyFileReferencesConversion,+        "graphs" .=? externalPropertyFileReferencesGraphs,+        "invocations" .=? externalPropertyFileReferencesInvocations,+        "logicalLocations" .=? externalPropertyFileReferencesLogicalLocations,+        "policies" .=? externalPropertyFileReferencesPolicies,+        "externalizedProperties" .=? externalPropertyFileReferencesExternalizedProperties,+        "webRequests" .=? externalPropertyFileReferencesWebRequests,+        "webResponses" .=? externalPropertyFileReferencesWebResponses,+        "results" .=? externalPropertyFileReferencesResults,+        "taxonomies" .=? externalPropertyFileReferencesTaxonomies,+        "threadFlowLocations" .=? externalPropertyFileReferencesThreadFlowLocations,+        "translations" .=? externalPropertyFileReferencesTranslations,+        "driver" .=? externalPropertyFileReferencesDriver,+        "extensions" .=? externalPropertyFileReferencesExtensions,+        "properties" .=? externalPropertyFileReferencesProperties+      ]++instance FromJSON ExternalPropertyFileReferences where+  parseJSON = withObject "ExternalPropertyFileReferences" $ \obj ->+    MkExternalPropertyFileReferences+      <$> obj .:? "addresses"+      <*> obj .:? "artifacts"+      <*> obj .:? "conversion"+      <*> obj .:? "graphs"+      <*> obj .:? "invocations"+      <*> obj .:? "logicalLocations"+      <*> obj .:? "policies"+      <*> obj .:? "externalizedProperties"+      <*> obj .:? "webRequests"+      <*> obj .:? "webResponses"+      <*> obj .:? "results"+      <*> obj .:? "taxonomies"+      <*> obj .:? "threadFlowLocations"+      <*> obj .:? "translations"+      <*> obj .:? "driver"+      <*> obj .:? "extensions"+      <*> obj .:? "properties"
+ src/Data/SARIF/Fix.hs view
@@ -0,0 +1,41 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `Fix` type to represent SARIF artifacts.+module Data.SARIF.Fix where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.ArtifactChange+import Data.SARIF.Message+import Data.Text++data Fix+  = MkFix+      { -- | The description property of the fix+        fixDescription :: Message+        -- | The artifactChanges property of the fix+      , fixArtifactChanges :: [ArtifactChange]+        -- | The properties property of the Fix object+      , fixProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON Fix where+  toJSON MkFix {..} =+    object+      [ "description" .= fixDescription,+        "artifactChanges" .= fixArtifactChanges,+        "properties" .=? fixProperties+      ]++instance FromJSON Fix where+  parseJSON = withObject "Fix" $ \obj ->+    MkFix+      <$> obj .: "description"+      <*> obj .: "artifactChanges"+      <*> obj .:? "properties"
+ src/Data/SARIF/Graph.hs view
@@ -0,0 +1,46 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `Graph` type to represent SARIF artifacts.+module Data.SARIF.Graph (Graph (..)) where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.Edge+import Data.SARIF.Message+import Data.SARIF.Node+import Data.Text++data Graph+  = MkGraph+      { -- | The description property of the graph+        graphDescription :: Maybe Message+        -- | The nodes property of the graph,+      , graphNodes :: Maybe [Node]+        -- | The edges property of the graph+      , graphEdges :: Maybe [Edge]+        -- | The properties property of the Graph object+      , graphProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON Graph where+  toJSON MkGraph {..} =+    object+      [ "description" .=? graphDescription,+        "nodes" .=? graphNodes,+        "edges" .=? graphEdges,+        "properties" .=? graphProperties+      ]++instance FromJSON Graph where+  parseJSON = withObject "Graph" $ \obj ->+    MkGraph+      <$> obj .:? "description"+      <*> obj .:? "nodes"+      <*> obj .:? "edges"+      <*> obj .:? "properties"
+ src/Data/SARIF/GraphTraversal.hs view
@@ -0,0 +1,58 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `GraphTraversal` type to represent SARIF artifacts.+module Data.SARIF.GraphTraversal where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.EdgeTraversal+import Data.SARIF.Message+import Data.SARIF.MultiformatMessageString+import Data.Text++data GraphTraversal+  = MkGraphTraversal+      { -- | The resultGraphIndex property of the graph traversal+        graphTraversalResultGraphIndex :: Maybe Int+        -- | The runGraphIndex property of the graph traversal+      , graphTraversalRunGraphIndex :: Maybe Int+        -- | The description property of the graph traversal+      , graphTraversalDescription :: Maybe Message+        -- | The initialState property of the graph traversal+      , graphTraversalInitialState :: Map Text MultiformatMessageString+        -- | The immutableState property of the graph traversal+      , graphTraversalImmutableState :: Map Text MultiformatMessageString+        -- | The edgeTraversals property of the graph traversal+      , graphTraversalEdgeTraversals :: Maybe [EdgeTraversal]+        -- | The properties property of the GraphTraversal object+      , graphTraversalProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON GraphTraversal where+  toJSON MkGraphTraversal {..} =+    object+      [ "resultGraphIndex" .=? graphTraversalResultGraphIndex,+        "runGraphIndex" .=? graphTraversalRunGraphIndex,+        "description" .=? graphTraversalDescription,+        "initialState" .= graphTraversalInitialState,+        "immutableState" .= graphTraversalImmutableState,+        "edgeTraversals" .=? graphTraversalEdgeTraversals,+        "properties" .=? graphTraversalProperties+      ]++instance FromJSON GraphTraversal where+  parseJSON = withObject "GraphTraversal" $ \obj ->+    MkGraphTraversal+      <$> obj .:? "resultGraphIndex"+      <*> obj .:? "runGraphIndex"+      <*> obj .:? "description"+      <*> obj .: "initialState"+      <*> obj .: "immutableState"+      <*> obj .:? "edgeTraversals"+      <*> obj .:? "properties"
+ src/Data/SARIF/Invocation.hs view
@@ -0,0 +1,134 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `Invocation` type to represent SARIF artifacts.+module Data.SARIF.Invocation (Invocation (..)) where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.ArtifactLocation+import Data.SARIF.ConfigurationOverride+import Data.SARIF.Notification+import Data.Text++data Invocation+  = MkInvocation+      { -- | The commandLine property of the invocation+        invocationCommandLine :: Maybe Text+        -- | The arguments property of the invocation+      , invocationArguments :: Maybe [Text]+        -- | The responseFiles property of the invocation+      , invocationResponseFiles :: Maybe [ArtifactLocation]+        -- | The ruleConfigurationOverrides property of the invocation+      , invocationRuleConfigurationOverrides :: Maybe [ConfigurationOverride]+        -- | The notificationConfigurationOverrides property of the invocation+      , invocationNotificationConfigurationOverrides :: Maybe [ConfigurationOverride]+        -- | The startTimeUtc property of the invocation+      , invocationStartTimeUtc :: Maybe Text+        -- | The endTimeUtc property of the invocation+      , invocationEndTimeUtc :: Maybe Text+        -- | The exitCode property of the invocation+      , invocationExitCode :: Maybe Int+        -- | The exitCodeDescription property of the invocation+      , invocationExitCodeDescription :: Maybe Text+        -- | The exitSignalName property of the invocation+      , invocationExitSignalName :: Maybe Text+        -- | The exitSignalNumber property of the invocation+      , invocationExitSignalNumber :: Maybe Int+        -- | The processStartFailureMessage property of the invocation+      , invocationProcessStartFailureMessage :: Maybe Text+        -- | The executionSuccessful property of the invocation+      , invocationExecutionSuccessful :: Bool+        -- | The machine property of the invocation+      , invocationMachine :: Maybe Text+        -- | The account property of the invocation+      , invocationAccount :: Maybe Text+        -- | The processId property of the invocation+      , invocationProcessId :: Maybe Int+        -- | The executableLocation property of the invocation+      , invocationExecutableLocation :: Maybe ArtifactLocation+        -- | The workingDirectory property of the invocation+      , invocationWorkingDirectory :: Maybe ArtifactLocation+        -- | The environmentVariables property of the invocation+      , invocationEnvironmentVariables :: Maybe (Map Text Text)+        -- | The toolExecutionNotifications property of the invocation+      , invocationToolExecutionNotifications :: Maybe [Notification]+        -- | The toolConfigurationNotifications property of the invocation+      , invocationToolConfigurationNotifications :: Maybe [Notification]+        -- | The stdin property of the invocation+      , invocationStdin :: Maybe ArtifactLocation+        -- | The stdout property of the invocation+      , invocationStdout :: Maybe ArtifactLocation+        -- | The stderr property of the invocation+      , invocationStderr :: Maybe ArtifactLocation+        -- | The stdoutStderr property of the invocation+      , invocationStdoutStderr :: Maybe ArtifactLocation+        -- | The properties property of the Invocation object+      , invocationProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON Invocation where+  toJSON MkInvocation {..} =+    object+      [ "commandLine" .=? invocationCommandLine,+        "arguments" .=? invocationArguments,+        "responseFiles" .=? invocationResponseFiles,+        "ruleConfigurationOverrides" .=? invocationRuleConfigurationOverrides,+        "notificationConfigurationOverrides" .=? invocationNotificationConfigurationOverrides,+        "startTimeUtc" .=? invocationStartTimeUtc,+        "endTimeUtc" .=? invocationEndTimeUtc,+        "exitCode" .=? invocationExitCode,+        "exitCodeDescription" .=? invocationExitCodeDescription,+        "exitSignalName" .=? invocationExitSignalName,+        "exitSignalNumber" .=? invocationExitSignalNumber,+        "processStartFailureMessage" .=? invocationProcessStartFailureMessage,+        "executionSuccessful" .= invocationExecutionSuccessful,+        "machine" .=? invocationMachine,+        "account" .=? invocationAccount,+        "processId" .=? invocationProcessId,+        "executableLocation" .=? invocationExecutableLocation,+        "workingDirectory" .=? invocationWorkingDirectory,+        "environmentVariables" .=? invocationEnvironmentVariables,+        "toolExecutionNotifications" .=? invocationToolExecutionNotifications,+        "toolConfigurationNotifications" .=? invocationToolConfigurationNotifications,+        "stdin" .=? invocationStdin,+        "stdout" .=? invocationStdout,+        "stderr" .=? invocationStderr,+        "stdoutStderr" .=? invocationStdoutStderr,+        "properties" .=? invocationProperties+      ]++instance FromJSON Invocation where+  parseJSON = withObject "Invocation" $ \obj ->+    MkInvocation+      <$> obj .:? "commandLine"+      <*> obj .:? "arguments"+      <*> obj .:? "responseFiles"+      <*> obj .:? "ruleConfigurationOverrides"+      <*> obj .:? "notificationConfigurationOverrides"+      <*> obj .:? "startTimeUtc"+      <*> obj .:? "endTimeUtc"+      <*> obj .:? "exitCode"+      <*> obj .:? "exitCodeDescription"+      <*> obj .:? "exitSignalName"+      <*> obj .:? "exitSignalNumber"+      <*> obj .:? "processStartFailureMessage"+      <*> obj .: "executionSuccessful"+      <*> obj .:? "machine"+      <*> obj .:? "account"+      <*> obj .:? "processId"+      <*> obj .:? "executableLocation"+      <*> obj .:? "workingDirectory"+      <*> obj .:? "environmentVariables"+      <*> obj .:? "toolExecutionNotifications"+      <*> obj .:? "toolConfigurationNotifications"+      <*> obj .:? "stdin"+      <*> obj .:? "stdout"+      <*> obj .:? "stderr"+      <*> obj .:? "stdoutStderr"+      <*> obj .:? "properties"
src/Data/SARIF/Level.hs view
@@ -5,41 +5,39 @@ -- file in the root directory of this source tree.                            -- -------------------------------------------------------------------------------- --- | Provides the `Level` type, which enumerates SARIF result levels.--- See https://docs.oasis-open.org/sarif/sarif/v2.1.0/cs01/sarif-v2.1.0-cs01.html#_Ref493511208-module Data.SARIF.Level (-    Level(..)-) where+-- | Provides the `Level` type to represent SARIF artifacts.+module Data.SARIF.Level+  ( Level (..),+  )+where  -------------------------------------------------------------------------------- -import Data.Aeson.Optional hiding (Error)----------------------------------------------------------------------------------+import Data.Aeson.Optional  -- | A `Level` value represents the severity of a result. data Level-    -- | The concept of “severity” does not apply.-    = None-    -- | A minor problem or an opportunity to improve the code was found.-    | Note-    -- | A problem was found.-    | Warning-    -- | A serious problem was found.-    | Error-    deriving (Eq, Show)+  -- | The concept of “severity” does not apply.+  = LevelNone+  -- | A minor problem or an opportunity to improve the code was found.+  | LevelNote+  -- | A problem was found.+  | LevelWarning+  -- | A serious problem was found.+  | LevelError+  deriving (Eq, Ord, Show)  instance ToJSON Level where-    toJSON None = "none"-    toJSON Note = "note"-    toJSON Warning = "warning"-    toJSON Error = "error"+  toJSON LevelNone = "none"+  toJSON LevelNote = "note"+  toJSON LevelWarning = "warning"+  toJSON LevelError = "error"  instance FromJSON Level where-    parseJSON (String "none") = pure None-    parseJSON (String "note") = pure Note-    parseJSON (String "warning") = pure Warning-    parseJSON (String "error") = pure Error-    parseJSON _ = fail "Unexpected value for result level"+  parseJSON (String "none") = pure LevelNone+  parseJSON (String "note") = pure LevelNote+  parseJSON (String "warning") = pure LevelWarning+  parseJSON (String "error") = pure LevelError+  parseJSON _ = fail "Unexpected value for result level"  --------------------------------------------------------------------------------
src/Data/SARIF/Location.hs view
@@ -5,94 +5,63 @@ -- file in the root directory of this source tree.                            -- -------------------------------------------------------------------------------- --- | Provides types used to refer to different sorts of locations, such as--- files, as well as parts of files.-module Data.SARIF.Location (-    Location(..),-    ArtifactLocation(..),-    Region(..),-    PhysicalLocation(..)-) where+-- | Provides the `Location` type to represent SARIF artifacts.+module Data.SARIF.Location+  ( Location (..),+  )+where  -------------------------------------------------------------------------------- -import Data.Aeson-import Data.Text+import Data.Aeson.Optional+-- import Data.SARIF.LocationRelationship ---------------------------------------------------------------------------------+import Data.Map.Strict+import Data.SARIF.LocationRelationship+import Data.SARIF.LogicalLocation+import Data.SARIF.Message+import Data.SARIF.PhysicalLocation+import Data.SARIF.Region+import Data.Text --- | Represents locations.-newtype Location = MkLocation {-    -- | The physical location (i.e. part of a file) to which this location-    -- refers to.-    locationPhysicalLocation :: Maybe PhysicalLocation-} deriving (Eq, Show)+data Location+  = MkLocation+      { -- | The id property of a location object+        locationId :: Maybe Integer+        -- | The physicalLocation property of a location object+      , locationPhysicalLocation :: Maybe PhysicalLocation+        -- | The logicalLocations property of a location object+      , locationLogicalLocations :: Maybe [LogicalLocation]+        -- | The message property of a location object+      , locationMessage :: Maybe Message+        -- | The annotations property of a location object+      , locationAnnotations :: Maybe [Region]+        -- | The relationship property of a location object+      , locationRelationship :: Maybe [LocationRelationship]+        -- | The properties property of the Location object+      , locationProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)  instance ToJSON Location where-    toJSON MkLocation{..} = object-        [ "physicalLocation" .= locationPhysicalLocation-        ]+  toJSON MkLocation {..} =+    object+      [ "id" .=? locationId,+        "physicalLocation" .=? locationPhysicalLocation,+        "logicalLocation" .=? locationLogicalLocations,+        "message" .=? locationMessage,+        "annotations" .=? locationAnnotations,+        "relationships" .=? locationRelationship,+        "properties" .=? locationProperties+      ]  instance FromJSON Location where-    parseJSON = withObject "Location" $ \obj ->-        MkLocation <$> obj .:? "physicalLocation"---- | Represents artifact locations such as file paths.-newtype ArtifactLocation = MkArtifactLocation {-    artifactLocationUri :: Text-} deriving (Eq, Show)--instance ToJSON ArtifactLocation where-    toJSON MkArtifactLocation{..} = object-        [ "uri" .= artifactLocationUri-        ]--instance FromJSON ArtifactLocation where-    parseJSON = withObject "ArtifactLocation" $ \obj ->-        MkArtifactLocation <$> obj .: "uri"---- | Represents regions of code with a start and an end.-data Region = MkRegion {-    -- | The line on which this region starts.-    regionStartLine :: Int,-    -- | The column within the starting line where this region starts.-    regionStartColumn :: Int,-    -- | The line on which this region ends.-    regionEndLine :: Int,-    -- | The column within the ending line where this region ends.-    regionEndColumn :: Int-} deriving (Eq, Show)--instance ToJSON Region where-    toJSON MkRegion{..} = object-        [ "startLine" .= regionStartLine-        , "startColumn" .= regionStartColumn-        , "endLine" .= regionEndLine-        , "endColumn" .= regionEndColumn-        ]--instance FromJSON Region where-    parseJSON = withObject "Region" $ \obj ->-        MkRegion <$> obj .: "startLine"-                 <*> obj .: "startColumn"-                 <*> obj .: "endLine"-                 <*> obj .: "endColumn"---- | Represents parts of artifacts, e.g. a `Region` within a file.-data PhysicalLocation = MkPhysicalLocation {-    physicalLocationArtifactLocation :: ArtifactLocation,-    physicalLocationRegion :: Region-} deriving (Eq, Show)--instance ToJSON PhysicalLocation where-    toJSON MkPhysicalLocation{..} = object-        [ "artifactLocation" .= physicalLocationArtifactLocation-        , "region" .= physicalLocationRegion-        ]--instance FromJSON PhysicalLocation where-    parseJSON = withObject "PhysicalLocation" $ \obj ->-        MkPhysicalLocation <$> obj .: "artifactLocation"-                           <*> obj .: "region"----------------------------------------------------------------------------------+  parseJSON = withObject "Location" $ \obj ->+    MkLocation+      <$> obj .:? "id"+      <*> obj .:? "physicalLocation"+      <*> obj .:? "logicalLocations"+      <*> obj .:? "message"+      <*> obj .:? "annotations"+      <*> obj .:? "relationships"+      <*> obj .:? "properties"
+ src/Data/SARIF/LocationRelationship.hs view
@@ -0,0 +1,71 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `LocationRelationship` type to represent SARIF artifacts.+module Data.SARIF.LocationRelationship+  ( LocationRelationship (..),+  )+where++--------------------------------------------------------------------------------++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.Message+import Data.Text++--------------------------------------------------------------------------------++data LocationRelationshipKind+  = LocationRelIncludes+  | LocationRelIsIncludedBy+  | LocationRelRelevant+  | LocationRelCustom Text+  deriving (Eq, Ord, Show)++instance ToJSON LocationRelationshipKind where+  toJSON LocationRelIncludes = String "includes"+  toJSON LocationRelIsIncludedBy = String "isIncludedBy"+  toJSON LocationRelRelevant = String "relevant"+  toJSON (LocationRelCustom customKind) = String customKind++instance FromJSON LocationRelationshipKind where+  parseJSON = withText "LocationRelationshipKind" $ \case+    "includes" -> pure LocationRelIncludes+    "isIncludedBy" -> pure LocationRelIsIncludedBy+    "relevant" -> pure LocationRelRelevant+    t' -> pure $ LocationRelCustom t'++data LocationRelationship+  = MkLocationRelationship+      { -- | The target property of a LocationRelationship object+        logicalRelTarget :: Integer+        -- | The name property of a LocationRelationship object+      , logicalRelKinds :: Maybe [LocationRelationshipKind]+        -- | The description property of a LocationRelationship object+      , logicalRelDescription :: Maybe Message+        -- | The properties property of the LocationRelationship object+      , logicalRelProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON LocationRelationship where+  toJSON MkLocationRelationship {..} =+    object+      [ "target" .= logicalRelTarget,+        "kinds" .= logicalRelKinds,+        "description" .=? logicalRelDescription,+        "properties" .=? logicalRelProperties+      ]++instance FromJSON LocationRelationship where+  parseJSON = withObject "LocationRelationship" $ \obj ->+    MkLocationRelationship+      <$> obj .: "target"+      <*> obj .:? "kinds"+      <*> obj .:? "description"+      <*> obj .:? "properties"
src/Data/SARIF/Log.hs view
@@ -5,54 +5,54 @@ -- file in the root directory of this source tree.                            -- -------------------------------------------------------------------------------- --- | Provides the top-level structure of SARIF.-module Data.SARIF.Log (-    Log(..),-    defaultLog,+-- | Provides the `Log` type to represent SARIF artifacts.+module Data.SARIF.Log+  ( Log (..),     decodeSarifFileStrict,-    encodeSarifAsLBS-) where+    encodeSarifAsLBS,+  )+where  -------------------------------------------------------------------------------- -import Data.Aeson+import Data.Aeson.Optional import qualified Data.ByteString.Lazy as LBS+import Data.SARIF.ExternalPropertyFileReferences+import Data.SARIF.Run import Data.Text -import Data.SARIF.Run (Run(..))- --------------------------------------------------------------------------------  -- | Each SARIF file contains one `Log` value at the top.-data Log = MkLog {-    -- | The version identifier of the SARIF format used by the file.-    logVersion :: Text,-    -- | A list of descriptions of runs of static analysis tools.-    logRuns :: [Run]-} deriving (Eq, Show)---- | The URL of the JSON schema that describes SARIF.-schemaUrl :: Text-schemaUrl = "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json"+data Log+  = MkLog+      { -- | The version identifier of the SARIF format used by the file.+        logVersion :: Text+        -- | An absolute URI to the JSON schema describing the SARIF format version of this log file.+      , logSchema :: Maybe Text+        -- | A list of descriptions of runs of static analysis tools.+      , logRuns :: Maybe [Run]+        -- | The inlineExternalProperties property of the log+      , logProperties :: Maybe ExternalPropertyFileReferences+      }+  deriving (Eq, Ord, Show)  instance ToJSON Log where-    toJSON MkLog{..} = object-        [ "version" .= logVersion-        , "runs" .= logRuns-        , "$schema" .= schemaUrl-        ]+  toJSON MkLog {..} =+    object+      [ "version" .= logVersion,+        "runs" .=? logRuns,+        "$schema" .=? logSchema,+        "inlineExternalProperties" .=? logProperties+      ]  instance FromJSON Log where-    parseJSON = withObject "Log" $ \obj ->-        MkLog <$> obj .: "version"-              <*> obj .: "runs"---- | Represents a default `Log` value.-defaultLog :: Log-defaultLog = MkLog{-    logVersion = "2.1.0",-    logRuns = []-}+  parseJSON = withObject "Log" $ \obj ->+    MkLog+      <$> obj .: "version"+      <*> obj .:? "$schema"+      <*> obj .:? "runs"+      <*> obj .:? "inlineExternalProperties"  -- | `decodeSarifFileStrict` @filepath@ is a type-specialised version of -- `eitherDecodeFileStrict` for `Log`.
+ src/Data/SARIF/LogicalLocation.hs view
@@ -0,0 +1,129 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `LogicalLocation` type to represent SARIF artifacts.+{-# LANGUAGE ScopedTypeVariables #-}++module Data.SARIF.LogicalLocation+  ( LogicalLocation (..),+  )+where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.Text++--------------------------------------------------------------------------------++data LogicalLocationKind+  = ExecutableCodeFunctionKind+  | ExecutableCodeMemberKind+  | ExecutableCodeModuleKind+  | ExecutableCodeNamespaceKind+  | ExecutableCodeResourceKind+  | ExecutableCodeTypeKind+  | ExecutableCodeParameterKind+  | ExecutableCodeVariableKind+  | XMLHTMLElementKind+  | XMLHTMLAttributeKind+  | XMLHTMLTextKind+  | XMLHTMLCommentKind+  | XMLHTMLProcessingInstructionKind+  | XMLHTMLDtdKind+  | XMLHTMLDeclarationKind+  | JSONObjectKind+  | JSONArrayKind+  | JSONPropertyKind+  | JSONValueKind+  deriving (Eq, Ord, Show)++instance ToJSON LogicalLocationKind where+  toJSON ExecutableCodeFunctionKind = String "function"+  toJSON ExecutableCodeMemberKind = String "member"+  toJSON ExecutableCodeModuleKind = String "module"+  toJSON ExecutableCodeNamespaceKind = String "namespace"+  toJSON ExecutableCodeResourceKind = String "resource"+  toJSON ExecutableCodeTypeKind = String "type"+  toJSON ExecutableCodeParameterKind = String "parameter"+  toJSON ExecutableCodeVariableKind = String "variable"+  toJSON XMLHTMLElementKind = String "element"+  toJSON XMLHTMLAttributeKind = String "attribute"+  toJSON XMLHTMLTextKind = String "text"+  toJSON XMLHTMLCommentKind = String "comment"+  toJSON XMLHTMLProcessingInstructionKind = String "processingInstruction"+  toJSON XMLHTMLDtdKind = String "dtd"+  toJSON XMLHTMLDeclarationKind = String "declaration"+  toJSON JSONObjectKind = String "object"+  toJSON JSONArrayKind = String "array"+  toJSON JSONPropertyKind = String "property"+  toJSON JSONValueKind = String "value"++instance FromJSON LogicalLocationKind where+  parseJSON = withText "LogicalLocationKind" $ \t ->+    case t of+      "function" -> pure ExecutableCodeFunctionKind+      "member" -> pure ExecutableCodeMemberKind+      "module" -> pure ExecutableCodeModuleKind+      "namespace" -> pure ExecutableCodeNamespaceKind+      "resource" -> pure ExecutableCodeResourceKind+      "type" -> pure ExecutableCodeTypeKind+      "parameter" -> pure ExecutableCodeParameterKind+      "variable" -> pure ExecutableCodeVariableKind+      "element" -> pure XMLHTMLElementKind+      "attribute" -> pure XMLHTMLAttributeKind+      "text" -> pure XMLHTMLTextKind+      "comment" -> pure XMLHTMLCommentKind+      "processingInstruction" -> pure XMLHTMLProcessingInstructionKind+      "dtd" -> pure XMLHTMLDtdKind+      "declaration" -> pure XMLHTMLDeclarationKind+      "object" -> pure JSONObjectKind+      "array" -> pure JSONArrayKind+      "property" -> pure JSONPropertyKind+      "value" -> pure JSONValueKind+      _ -> fail $ "Unknown LogicalLocationKind: " ++ unpack t++data LogicalLocation+  = MkLogicalLocation+      { -- | The index property of a logicalLocation object+        logicalLocIndex :: Maybe Integer+        -- | The name property of a logicalLocation object+      , logicalLocName :: Text+        -- | The fullyQualifiedName property of a logicalLocation object+      , logicalLocFullyQualifiedName :: Maybe Text+        -- | The decoratedName property of a logicalLocation object+      , logicalLocDecoratedName :: Maybe Text+        -- | The kind property of a logicalLocation object+      , logicalLocKind :: LogicalLocationKind+        -- | The parentIndex property of a logicalLocation object+      , logicalLocParentIndex :: Maybe Integer+        -- | The properties property of the LogicalLocation object+      , logicalLocProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON LogicalLocation where+  toJSON MkLogicalLocation {..} =+    object+      [ "index" .=? logicalLocIndex,+        "name" .= logicalLocName,+        "fullyQualifiedName" .=? logicalLocFullyQualifiedName,+        "decoratedName" .=? logicalLocDecoratedName,+        "kind" .= logicalLocKind,+        "parentIndex" .=? logicalLocParentIndex,+        "properties" .=? logicalLocProperties+      ]++instance FromJSON LogicalLocation where+  parseJSON = withObject "LogicalLocation" $ \obj ->+    MkLogicalLocation+      <$> obj .:? "index"+      <*> obj .: "name"+      <*> obj .:? "fullyQualifiedName"+      <*> obj .:? "decoratedName"+      <*> obj .: "kind"+      <*> obj .:? "parentIndex"+      <*> obj .:? "properties"
+ src/Data/SARIF/Message.hs view
@@ -0,0 +1,52 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `Message` type to represent SARIF artifacts.+module Data.SARIF.Message+  ( Message (..),+  )+where++--------------------------------------------------------------------------------++import Data.Aeson.Optional+import Data.Map.Strict+import Data.Text++data Message+  = MkMessage+      { -- | The text property of a message object+        messageText :: Maybe Text+        -- | The markdown property of a message object+      , messageMarkdown :: Maybe Text+        -- | The id property of a message object+      , messageId :: Maybe Text+        -- | The arguments property of a message object+      , messageArguments :: Maybe [Text]+        -- | The properties property of the Message object+      , messageProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON Message where+  toJSON MkMessage {..} =+    object+      [ "text" .=? messageText,+        "markdown" .=? messageMarkdown,+        "id" .=? messageId,+        "arguments" .=? messageArguments,+        "properties" .=? messageProperties+      ]++instance FromJSON Message where+  parseJSON = withObject "Message" $ \obj ->+    MkMessage+      <$> (obj .:? "text")+      <*> (obj .:? "markdown")+      <*> obj .:? "id"+      <*> obj .:? "arguments"+      <*> obj .:? "properties"
src/Data/SARIF/MultiformatMessageString.hs view
@@ -5,47 +5,41 @@ -- file in the root directory of this source tree.                            -- -------------------------------------------------------------------------------- --- | Provides the `MultiformatMessageString` type which is used to represent--- messages in different formats, such as text or markdown.-module Data.SARIF.MultiformatMessageString (-    MultiformatMessageString(..),-    defaultMultiformatMessageString-) where+-- | Provides the `MultiformatMessageString` type to represent SARIF artifacts. +module Data.SARIF.MultiformatMessageString+  ( MultiformatMessageString (..),+  )+where+ --------------------------------------------------------------------------------  import Data.Aeson.Optional+import Data.Map.Strict import Data.Text ------------------------------------------------------------------------------------- | Represents a message in at least textual representation, but also allowing--- it to be provided in other formats such as markdown.-data MultiformatMessageString = MkMultiformatMessageString {-    -- | A textual representation of the message, which is mandatory.-    mmsText :: Text,-    -- | Optionally, a markdown representation of the message.-    mmsMarkdown :: Maybe Text-} deriving (Eq, Show)+data MultiformatMessageString+  = MkMultiformatMessageString+      { -- | A textual representation of the message, which is mandatory.+        mmsText :: Text+        -- | Optionally, a markdown representation of the message.+      , mmsMarkdown :: Maybe Text+        -- | The properties property of the MultiformatMessageString object+      , mmsProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)  instance ToJSON MultiformatMessageString where-    toJSON MkMultiformatMessageString{..} = object-        [ "text" .= mmsText-        , "markdown" .=? mmsMarkdown-        ]+  toJSON MkMultiformatMessageString {..} =+    object+      [ "text" .= mmsText,+        "markdown" .=? mmsMarkdown,+        "properties" .=? mmsProperties+      ]  instance FromJSON MultiformatMessageString where-    parseJSON = withObject "MultiformatMessageString" $ \obj ->-        MkMultiformatMessageString <$> obj .: "text"-                                   <*> obj .:? "markdown"---- | `defaultMultiformatMessageString` @messageText@ constructs a--- `MultiformatMessageString` value where @messageText@ is the textual--- representation of the message.-defaultMultiformatMessageString :: Text -> MultiformatMessageString-defaultMultiformatMessageString text = MkMultiformatMessageString{-    mmsText = text,-    mmsMarkdown = Nothing-}----------------------------------------------------------------------------------+  parseJSON = withObject "MultiformatMessageString" $ \obj ->+    MkMultiformatMessageString+      <$> obj .: "text"+      <*> obj .:? "markdown"+      <*> obj .:? "properties"
+ src/Data/SARIF/Node.hs view
@@ -0,0 +1,49 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `Node` type to represent SARIF artifacts.+module Data.SARIF.Node where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.Location+import Data.SARIF.Message+import Data.Text++data Node+  = MkNode+      { -- | The id property of the node+        nodeId :: Text+        -- | The message property of the node+      , nodeMessage :: Maybe Message+        -- | The location property of the node+      , nodeLocation :: Location+        -- | The children property of the node+      , nodeChildren :: Maybe [Node]+        -- | The properties property of the Node object+      , nodeProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON Node where+  toJSON MkNode {..} =+    object+      [ "id" .= nodeId,+        "message" .=? nodeMessage,+        "location" .= nodeLocation,+        "children" .=? nodeChildren,+        "properties" .=? nodeProperties+      ]++instance FromJSON Node where+  parseJSON = withObject "Node" $ \obj ->+    MkNode+      <$> obj .: "id"+      <*> obj .:? "message"+      <*> obj .: "location"+      <*> obj .:? "children"+      <*> obj .:? "properties"
+ src/Data/SARIF/Notification.hs view
@@ -0,0 +1,88 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `Notification` type to represent SARIF artifacts.+module Data.SARIF.Notification where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.Exception+import Data.SARIF.Location+import Data.SARIF.Message+import Data.SARIF.ReportingDescriptorReference+import Data.Text++data NotificationLevel+  = NotificationErrorLevel+  | NotificationWarningLevel+  | NotificationNoteLevel+  | NotificationNoneLevel+  deriving (Eq, Ord, Show)++instance ToJSON NotificationLevel where+  toJSON NotificationErrorLevel = String "error"+  toJSON NotificationWarningLevel = String "warning"+  toJSON NotificationNoteLevel = String "note"+  toJSON NotificationNoneLevel = String "none"++instance FromJSON NotificationLevel where+  parseJSON = withText "NotificationLevel" $ \case+    "error" -> pure NotificationErrorLevel+    "warning" -> pure NotificationWarningLevel+    "note" -> pure NotificationNoteLevel+    "none" -> pure NotificationNoneLevel+    _ -> fail "Unknown NotificationLevel"++data Notification+  = MkNotification+      { -- | The descriptor property of the notification+        notificationDescriptor :: ReportingDescriptorReference+        -- | The associatedRule property of the notification+      , notificationAssociatedRule :: Maybe ReportingDescriptorReference+        -- | The locations property of the notification+      , notificationLocations :: Maybe [Location]+        -- | The message property of the notification+      , notificationMessage :: Maybe Message+        -- | The level property of the notification+      , notificationLevel :: Maybe NotificationLevel+        -- | The threadId property of the notification+      , notificationThreadId :: Maybe Int+        -- | The timeUtc property of the notification+      , notificationTimeUtc :: Maybe Text+        -- | The exception property of the notification+      , notificationException :: Maybe Exception+        -- | The properties property of the Notification object+      , notificationProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON Notification where+  toJSON MkNotification {..} =+    object+      [ "descriptor" .= notificationDescriptor,+        "associatedRule" .=? notificationAssociatedRule,+        "locations" .=? notificationLocations,+        "message" .=? notificationMessage,+        "level" .=? notificationLevel,+        "threadId" .=? notificationThreadId,+        "timeUtc" .=? notificationTimeUtc,+        "exception" .=? notificationException,+        "properties" .=? notificationProperties+      ]++instance FromJSON Notification where+  parseJSON = withObject "Notification" $ \obj ->+    MkNotification+      <$> obj .: "descriptor"+      <*> obj .:? "associatedRule"+      <*> obj .:? "locations"+      <*> obj .:? "message"+      <*> obj .:? "level"+      <*> obj .:? "threadId"+      <*> obj .:? "timeUtc"+      <*> obj .:? "exception"+      <*> obj .:? "properties"
+ src/Data/SARIF/PhysicalLocation.hs view
@@ -0,0 +1,55 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `PhysicalLocation` type to represent SARIF artifacts.+module Data.SARIF.PhysicalLocation+  ( PhysicalLocation (..),+  )+where++--------------------------------------------------------------------------------++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.Address+import Data.SARIF.ArtifactLocation+import Data.SARIF.Region+import Data.Text++data PhysicalLocation+  = MkPhysicalLocation+      { -- | The artifactLocation property of a physicalLocation object+        physicalLocArtifactLocation :: Maybe ArtifactLocation+        -- | The region property of a physicalLocation object+      , physicalLocRegion :: Maybe Region+        -- | The contextRegion property of a physicalLocation object+      , physicalLocContextRegion :: Maybe Region+        -- | The address property of a physicalLocation object+      , physicalLocAddress :: Maybe Address+        -- | The properties property of the PhysicalLocation object+      , physicalLocProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON PhysicalLocation where+  toJSON MkPhysicalLocation {..} =+    object+      [ "artifactLocation" .=? physicalLocArtifactLocation,+        "region" .=? physicalLocRegion,+        "contextRegion" .=? physicalLocContextRegion,+        "address" .=? physicalLocAddress,+        "properties" .=? physicalLocProperties+      ]++instance FromJSON PhysicalLocation where+  parseJSON = withObject "PhysicalLocation" $ \obj ->+    MkPhysicalLocation+      <$> obj .:? "artifactLocation"+      <*> obj .:? "region"+      <*> obj .:? "contextRegion"+      <*> obj .:? "address"+      <*> obj .:? "properties"
+ src/Data/SARIF/Rectangle.hs view
@@ -0,0 +1,52 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `Rectangle` type to represent SARIF artifacts.+module Data.SARIF.Rectangle where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.Message+import Data.Text++data Rectangle+  = MkRectangle+      { -- | The top property of the rectangle+        rectangleTop :: Int+        -- | The left property of the rectangle+      , rectangleLeft :: Int+        -- | The bottom property of the rectangle+      , rectangleBottom :: Int+        -- | The right property of the rectangle+      , rectangleRight :: Int+        -- | The message property of the rectangle+      , rectangleMessage :: Message+        -- | The properties property of the Rectangle object+      , rectangleProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON Rectangle where+  toJSON MkRectangle {..} =+    object+      [ "top" .= rectangleTop,+        "left" .= rectangleLeft,+        "bottom" .= rectangleBottom,+        "right" .= rectangleRight,+        "message" .= rectangleMessage,+        "properties" .=? rectangleProperties+      ]++instance FromJSON Rectangle where+  parseJSON = withObject "Rectangle" $ \obj ->+    MkRectangle+      <$> obj .: "top"+      <*> obj .: "left"+      <*> obj .: "bottom"+      <*> obj .: "right"+      <*> obj .: "message"+      <*> obj .:? "properties"
+ src/Data/SARIF/Region.hs view
@@ -0,0 +1,82 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `Region` type to represent SARIF artifacts.+module Data.SARIF.Region+  ( Region (..),+  )+where++--------------------------------------------------------------------------------++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.ArtifactContent+import Data.SARIF.Message+import Data.Text++data Region+  = MkRegion+      { -- | The startLine property of a region object+        regionStartLine :: Maybe Int+        -- | The startColumn property of a region object+      , regionStartColumn :: Maybe Int+        -- | The endLine property of a region object+      , regionEndLine :: Maybe Int+        -- | The endColumn property of a region object+      , regionEndColumn :: Maybe Int+        -- | The charOffset property of a region object+      , regionCharOffset :: Maybe Int+        -- | The charLength property of a region object+      , regionCharLength :: Maybe Int+        -- | The byteOffset property of a region object+      , regionByteOffset :: Maybe Int+        -- | The byteLength property of a region object+      , regionByteLength :: Maybe Int+        -- | The snippet property of a region object+      , regionSnippet :: Maybe ArtifactContent+        -- | The message property of a region object+      , regionMessage :: Maybe Message+        -- | The sourceLanguage property of a region object+      , regionSourceLanguage :: Maybe Text+        -- | The properties property of the Region object+      , regionProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON Region where+  toJSON MkRegion {..} =+    object+      [ "startLine" .=? regionStartLine,+        "startColumn" .=? regionStartColumn,+        "endLine" .=? regionEndLine,+        "endColumn" .=? regionEndColumn,+        "charOffset" .=? regionCharOffset,+        "charLength" .=? regionCharLength,+        "byteOffset" .=? regionByteOffset,+        "byteLength" .=? regionByteLength,+        "snippet" .=? regionSnippet,+        "message" .=? regionMessage,+        "sourceLanguage" .=? regionSourceLanguage,+        "properties" .=? regionProperties+      ]++instance FromJSON Region where+  parseJSON = withObject "Region" $ \obj ->+    MkRegion+      <$> obj .:? "startLine"+      <*> obj .:? "startColumn"+      <*> obj .:? "endLine"+      <*> obj .:? "endColumn"+      <*> obj .:? "charOffset"+      <*> obj .:? "charLength"+      <*> obj .:? "byteOffset"+      <*> obj .:? "byteLength"+      <*> obj .:? "snippet"+      <*> obj .:? "message"+      <*> obj .:? "sourceLanguage"+      <*> obj .:? "properties"
+ src/Data/SARIF/Replacement.hs view
@@ -0,0 +1,41 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `Replacement` type to represent SARIF artifacts.+module Data.SARIF.Replacement where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.ArtifactContent+import Data.SARIF.Region+import Data.Text++data Replacement+  = MkReplacement+      { -- | The deletedRegion property of the replacement+        replacementDeletedRegion :: Region+        -- | The insertedContent property of the replacement+      , replacementInsertedContent :: Maybe ArtifactContent+        -- | The properties property of the Replacement object+      , replacementProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON Replacement where+  toJSON MkReplacement {..} =+    object+      [ "deletedRegion" .= replacementDeletedRegion,+        "insertedContent" .=? replacementInsertedContent,+        "properties" .=? replacementProperties+      ]++instance FromJSON Replacement where+  parseJSON = withObject "Replacement" $ \obj ->+    MkReplacement+      <$> obj .: "deletedRegion"+      <*> obj .:? "insertedContent"+      <*> obj .:? "properties"
+ src/Data/SARIF/ReportingConfiguration.hs view
@@ -0,0 +1,53 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `ReportingConfiguration` type to represent SARIF artifacts.+module Data.SARIF.ReportingConfiguration+  ( ReportingConfiguration (..),+  )+where++--------------------------------------------------------------------------------++import Data.Aeson.Optional+import qualified Data.Map.Lazy as M+import Data.SARIF.Level+import Data.Text++data ReportingConfiguration+  = MkReportingConfiguration+      { -- | Flag indicating whether theDescriptor was checked for during the scan.+        reportingConfigurationEnabled :: Bool+        -- | The default severity of the reporting descriptor.+      , reportingConfigurationLevel :: Maybe Level+        -- | A float representing the priority or importance of the result.+      , reportingConfigurationRank :: Maybe Double+        -- | Configuration information that is specific to that descriptor+      , reportingConfigurationParameters :: Maybe (M.Map Text Value)+        -- | The properties property of the ReportingConfiguration object+      , reportingConfigurationProperties :: Maybe (M.Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON ReportingConfiguration where+  toJSON MkReportingConfiguration {..} =+    object+      [ "enabled" .= reportingConfigurationEnabled,+        "level" .=? reportingConfigurationLevel,+        "rank" .=? reportingConfigurationRank,+        "parameters" .=? reportingConfigurationParameters,+        "properties" .=? reportingConfigurationProperties+      ]++instance FromJSON ReportingConfiguration where+  parseJSON = withObject "ReportingConfiguration" $ \obj ->+    MkReportingConfiguration+      <$> (obj .: "enabled")+      <*> (obj .:? "level")+      <*> obj .:? "rank"+      <*> obj .:? "parameters"+      <*> obj .:? "properties"
src/Data/SARIF/ReportingDescriptor.hs view
@@ -5,106 +5,93 @@ -- file in the root directory of this source tree.                            -- -------------------------------------------------------------------------------- --- | Provides the `ReportingDescriptor` type, which is essentially used to--- represent descriptions of rules that a static analysis tool has applied.-module Data.SARIF.ReportingDescriptor (-    ReportingConfiguration(..),-    defaultReportingConfiguration,-    ReportingDescriptor(..),-    defaultReportingDescriptor-) where+-- | Provides the `ReportingDescriptor` type to represent SARIF artifacts.+{-# LANGUAGE ScopedTypeVariables #-} +module Data.SARIF.ReportingDescriptor+  ( ReportingDescriptor (..),+  )+where+ --------------------------------------------------------------------------------  import Data.Aeson.Optional-import qualified Data.Map.Lazy as M-import Data.Text--import Data.SARIF.Level+import Data.Map.Strict import Data.SARIF.MultiformatMessageString-------------------------------------------------------------------------------------- | Represents default configurations for `ReportingDescriptor` values. That is--- properties which may be overriden by individual results.-newtype ReportingConfiguration = MkReportingConfiguration {-    -- | The default severity of the reporting descriptor.-    rcLevel :: Maybe Level-} deriving (Eq, Show)--instance ToJSON ReportingConfiguration where-    toJSON MkReportingConfiguration{..} = object-        [ "level" .=? rcLevel-        ]-instance FromJSON ReportingConfiguration where-    parseJSON = withObject "ReportingConfiguration" $ \obj ->-        MkReportingConfiguration <$> obj .: "level"---- | `defaultReportingConfiguration` is a default--- `ReportingConfiguration` value.-defaultReportingConfiguration :: ReportingConfiguration-defaultReportingConfiguration = MkReportingConfiguration{-    rcLevel = Nothing-}+import Data.SARIF.ReportingConfiguration+import Data.SARIF.ReportingDescriptorRelationship+import Data.Text+import Data.UUID.Types --- | Represents rules that a static analysis tool-data ReportingDescriptor = MkReportingDescriptor {-    -- | The unique ID of the rule.-    rdId :: Text,-    -- | A friendly name for the rule, which should be one word in-    -- upper camel case.-    rdName :: Maybe Text,-    -- | A short description for the rule, which may contain spaces-    -- and symbols.-    rdShortDescription :: Maybe MultiformatMessageString,-    -- | The full description.-    rdFullDescription :: Maybe MultiformatMessageString,-    -- | A URL to some help for this rule.-    rdHelpUri :: Maybe Text,-    -- | A recommendation for what to do in order to resolve an occurrence-    -- of this rule.-    rdHelp :: Maybe MultiformatMessageString,-    -- | The default reporting configuration for the rule.-    rdDefaultConfiguration :: Maybe ReportingConfiguration,-    -- | Extra properties for this rule.-    rdProperties :: M.Map Text Value-} deriving (Eq, Show)+data ReportingDescriptor+  = MkReportingDescriptor+      { -- | The unique ID of the rule.+        reportingDescriptorId :: Text+        -- | Previously used IDs for the rule.+      , reportingDescriptorDeprecatedIds :: Maybe [Text]+        -- | A GUID which identifies the ReportingDescriptor.+      , reportingDescriptorGuid :: Maybe UUID+        -- | A list of deprecated GUIDs which previously identified the rule.+      , reportingDescriptorDeprecatedGuids :: Maybe [UUID]+        -- | A friendly name for the rule, which should be one word in+        -- upper camel case.+      , reportingDescriptorName :: Maybe Text+        -- | A list of names for the rule that were previously used.+      , reportingDescriptorDeprecatedNames :: Maybe [Text]+        -- | A short description for the rule, which may contain spaces+        -- and symbols.+      , reportingDescriptorShortDescription :: Maybe MultiformatMessageString+        -- | The full description.+      , reportingDescriptorFullDescription :: Maybe MultiformatMessageString+        -- | A mapping from arbitrary name to its corresponding message string.+      , reportingDescriptorMessageStrings :: Maybe (Map Text MultiformatMessageString)+        -- | A URL to some help for this rule.+      , reportingDescriptorHelpUri :: Maybe Text+        -- | A recommendation for what to do in order to resolve an occurrence+        -- of this rule.+      , reportingDescriptorHelp :: Maybe MultiformatMessageString+        -- | The default reporting configuration for the rule.+      , reportingDescriptorDefaultConfiguration :: Maybe ReportingConfiguration+        -- | Extra properties for this rule.+      , reportingDescriptorRelationships :: Maybe ReportingDescriptorRelationship+        -- | The properties property of the ReportingDescriptor object+      , reportingDescriptorProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)  instance ToJSON ReportingDescriptor where-    toJSON MkReportingDescriptor{..} = object-        [ "id" .= rdId-        , "name" .=? rdName-        , "shortDescription" .=? rdShortDescription-        , "fullDescription" .=? rdFullDescription-        , "helpUri" .=? rdHelpUri-        , "help" .=? rdHelp-        , "defaultConfiguration" .=? rdDefaultConfiguration-        , "properties" .= rdProperties-        ]+  toJSON MkReportingDescriptor {..} =+    object+      [ "id" .= reportingDescriptorId,+        "deprecatedIds" .=? reportingDescriptorDeprecatedIds,+        "guid" .=? reportingDescriptorGuid,+        "deprecatedGuids" .=? reportingDescriptorDeprecatedGuids,+        "name" .=? reportingDescriptorName,+        "deprecatedNames" .=? reportingDescriptorDeprecatedNames,+        "shortDescription" .=? reportingDescriptorShortDescription,+        "fullDescription" .= reportingDescriptorFullDescription,+        "messageStrings" .=? reportingDescriptorMessageStrings,+        "helpUri" .=? reportingDescriptorHelpUri,+        "help" .=? reportingDescriptorHelp,+        "defaultConfiguration" .=? reportingDescriptorDefaultConfiguration,+        "relationships" .=? reportingDescriptorRelationships,+        "properties" .=? reportingDescriptorProperties+      ]  instance FromJSON ReportingDescriptor where-    parseJSON = withObject "ReportingDescriptor" $ \obj ->-        MkReportingDescriptor <$> obj .: "id"-                              <*> obj .:? "name"-                              <*> obj .:? "shortDescription"-                              <*> obj .:? "fullDescription"-                              <*> obj .:? "helpUri"-                              <*> obj .:? "help"-                              <*> obj .:? "defaultConfiguration"-                              <*> obj .: "properties" .!= M.empty---- | `defaultReportingDescriptor` @id@ constructs a default--- `ReportingDescriptor` with the given @id@, which must be unique.-defaultReportingDescriptor :: Text -> ReportingDescriptor-defaultReportingDescriptor ident = MkReportingDescriptor{-    rdId = ident,-    rdName = Nothing,-    rdShortDescription = Nothing,-    rdFullDescription = Nothing,-    rdHelpUri = Nothing,-    rdHelp = Nothing,-    rdDefaultConfiguration = Nothing,-    rdProperties = M.empty-}----------------------------------------------------------------------------------+  parseJSON = withObject "ReportingDescriptor" $ \obj ->+    MkReportingDescriptor+      <$> obj .: "id"+      <*> obj .:? "deprecatedIds"+      <*> obj .:? "guid"+      <*> obj .:? "deprecatedGuids"+      <*> obj .:? "name"+      <*> obj .:? "deprecatedNames"+      <*> obj .:? "shortDescription"+      <*> obj .:? "fullDescription"+      <*> obj .:? "messageStrings"+      <*> obj .:? "helpUri"+      <*> obj .:? "help"+      <*> obj .:? "defaultConfiguration"+      <*> obj .:? "relationships"+      <*> obj .:? "properties"
+ src/Data/SARIF/ReportingDescriptorReference.hs view
@@ -0,0 +1,54 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `ReportingDescriptorReference` type to represent SARIF artifacts.+module Data.SARIF.ReportingDescriptorReference+  ( ReportingDescriptorReference (..),+  )+where++--------------------------------------------------------------------------------++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.ToolComponentReference+import Data.Text+import Data.UUID.Types++data ReportingDescriptorReference+  = MkReportingDescriptorReference+      { -- | An identifier which should equals to the `id` property of a reportingDescriptor+        reportingDescriptorReferenceId :: Maybe Text+        -- | An index into the `toolComponent.rules` array+      , reportingDescriptorReferenceIndex :: Maybe Integer+        -- | A GUID which identifies the ReportingDescriptor.+      , reportingDescriptorReferenceGuid :: Maybe UUID+        -- | A reference to a `ToolComponent`.+      , reportingDescriptorReferenceToolComponent :: Maybe ToolComponentReference+        -- | The properties property of the ReportingDescriptorReference object+      , reportingDescriptorReferenceProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON ReportingDescriptorReference where+  toJSON MkReportingDescriptorReference {..} =+    object+      [ "id" .=? reportingDescriptorReferenceId,+        "index" .=? reportingDescriptorReferenceIndex,+        "guid" .=? reportingDescriptorReferenceGuid,+        "toolComponent" .=? reportingDescriptorReferenceToolComponent,+        "properties" .=? reportingDescriptorReferenceProperties+      ]++instance FromJSON ReportingDescriptorReference where+  parseJSON = withObject "ReportingDescriptorReference" $ \obj ->+    MkReportingDescriptorReference+      <$> (obj .: "id")+      <*> (obj .:? "index")+      <*> obj .:? "guid"+      <*> obj .:? "toolComponent"+      <*> obj .:? "properties"
+ src/Data/SARIF/ReportingDescriptorRelationship.hs view
@@ -0,0 +1,87 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `ReportingDescriptorRelationship` type to represent SARIF artifacts.+module Data.SARIF.ReportingDescriptorRelationship where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.Message+import Data.SARIF.ReportingDescriptorReference+import Data.Text++data ReportingDescriptorRelationshipKind+  = ReportingDescriptorRelationshipEqualKind+  | ReportingDescriptorRelationshipSupersetKind+  | ReportingDescriptorRelationshipSubsetKind+  | ReportingDescriptorRelationshipDisjointKind+  | ReportingDescriptorRelationshipIncomparableKind+  | ReportingDescriptorRelationshipCanFollowKind+  | ReportingDescriptorRelationshipCanPrecedeKind+  | ReportingDescriptorRelationshipWillFollowKind+  | ReportingDescriptorRelationshipWillPrecedeKind+  | ReportingDescriptorRelationshipRelevantKind+  | ReportingDescriptorRelationshipCustomKind Text+  deriving (Eq, Ord, Show)++instance ToJSON ReportingDescriptorRelationshipKind where+  toJSON ReportingDescriptorRelationshipEqualKind = String "equal"+  toJSON ReportingDescriptorRelationshipSupersetKind = String "superset"+  toJSON ReportingDescriptorRelationshipSubsetKind = String "subset"+  toJSON ReportingDescriptorRelationshipDisjointKind = String "disjoint"+  toJSON ReportingDescriptorRelationshipIncomparableKind = String "incomparable"+  toJSON ReportingDescriptorRelationshipCanFollowKind = String "canFollow"+  toJSON ReportingDescriptorRelationshipCanPrecedeKind = String "canPrecede"+  toJSON ReportingDescriptorRelationshipWillFollowKind = String "willFollow"+  toJSON ReportingDescriptorRelationshipWillPrecedeKind = String "willPrecede"+  toJSON ReportingDescriptorRelationshipRelevantKind = String "relevant"+  toJSON (ReportingDescriptorRelationshipCustomKind t) = String t++instance FromJSON ReportingDescriptorRelationshipKind where+  parseJSON = withText "ReportingDescriptorRelationshipKind" $ \t ->+    case t of+      "equal" -> pure ReportingDescriptorRelationshipEqualKind+      "superset" -> pure ReportingDescriptorRelationshipSupersetKind+      "subset" -> pure ReportingDescriptorRelationshipSubsetKind+      "disjoint" -> pure ReportingDescriptorRelationshipDisjointKind+      "incomparable" -> pure ReportingDescriptorRelationshipIncomparableKind+      "canFollow" -> pure ReportingDescriptorRelationshipCanFollowKind+      "canPrecede" -> pure ReportingDescriptorRelationshipCanPrecedeKind+      "willFollow" -> pure ReportingDescriptorRelationshipWillFollowKind+      "willPrecede" -> pure ReportingDescriptorRelationshipWillPrecedeKind+      "relevant" -> pure ReportingDescriptorRelationshipRelevantKind+      _ -> pure (ReportingDescriptorRelationshipCustomKind t)++data ReportingDescriptorRelationship+  = MkReportingDescriptorRelationship+      { -- | The target property of the reporting descriptor relationship+        reportingDescriptorRelationshipTarget :: ReportingDescriptorReference+        -- | The kinds property of the reporting descriptor relationship+      , reportingDescriptorRelationshipKinds :: [ReportingDescriptorRelationshipKind]+        -- | The description property of the reporting descriptor relationship+      , reportingDescriptorRelationshipDescription :: Maybe Message+        -- | The properties property of the ReportingDescriptorRelationship object+      , reportingDescriptorRelationshipProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON ReportingDescriptorRelationship where+  toJSON MkReportingDescriptorRelationship {..} =+    object+      [ "target" .= reportingDescriptorRelationshipTarget,+        "kinds" .= reportingDescriptorRelationshipKinds,+        "description" .=? reportingDescriptorRelationshipDescription,+        "properties" .=? reportingDescriptorRelationshipProperties+      ]++instance FromJSON ReportingDescriptorRelationship where+  parseJSON = withObject "ReportingDescriptorRelationship" $ \obj ->+    MkReportingDescriptorRelationship+      <$> obj .: "target"+      <*> obj .: "kinds"+      <*> obj .:? "description"+      <*> obj .:? "properties"
src/Data/SARIF/Result.hs view
@@ -5,50 +5,242 @@ -- file in the root directory of this source tree.                            -- -------------------------------------------------------------------------------- --- | Provides the `Result` type which represents results of a--- static analysis tool.-module Data.SARIF.Result (-    Level(..),-    Result(..)-) where+-- | Provides the `Result` type to represent SARIF artifacts.+module Data.SARIF.Result+  ( ResultKind (..),+    Result (..),+    ResultLevel (..),+    ResultBaselineState (..),+  )+where  -------------------------------------------------------------------------------- -import Data.Aeson.Optional hiding (Result, Error)+import Data.Aeson.Optional hiding (Error, Result)+import Data.Map.Strict import Data.Text+import Data.UUID.Types -import Data.SARIF.Level+import Data.SARIF.ArtifactLocation+import Data.SARIF.Attachment+import Data.SARIF.CodeFlow+import Data.SARIF.Fix+import Data.SARIF.Graph+import Data.SARIF.GraphTraversal import Data.SARIF.Location-import Data.SARIF.MultiformatMessageString+import Data.SARIF.Message+import Data.SARIF.ReportingDescriptorReference (ReportingDescriptorReference)+import Data.SARIF.ResultProvenance+import Data.SARIF.Stack+import Data.SARIF.Suppression+import Data.SARIF.WebRequest+import Data.SARIF.WebResponse  -------------------------------------------------------------------------------- +data ResultKind+  = ResultPassKind+  | ResultOpenKind+  | ResultInformationalKind+  | ResultNoApplicableKind+  | ResultReviewKind+  | ResultFailKind+  deriving (Eq, Ord, Show)++instance ToJSON ResultKind where+  toJSON ResultPassKind = String "pass"+  toJSON ResultOpenKind = String "open"+  toJSON ResultInformationalKind = String "informational"+  toJSON ResultNoApplicableKind = String "noApplicable"+  toJSON ResultReviewKind = String "review"+  toJSON ResultFailKind = String "fail"++instance FromJSON ResultKind where+  parseJSON = withText "ResultKind" $ \case+    "pass" -> pure ResultPassKind+    "open" -> pure ResultOpenKind+    "informational" -> pure ResultInformationalKind+    "noApplicable" -> pure ResultNoApplicableKind+    "review" -> pure ResultReviewKind+    "fail" -> pure ResultFailKind+    _ -> fail "Unknown ResultKind"++data ResultLevel+  = ResultWarningLevel+  | ResultErrorLevel+  | ResultNoteLevel+  | ResultNoneLevel+  deriving (Eq, Ord, Show)++instance ToJSON ResultLevel where+  toJSON ResultWarningLevel = String "warning"+  toJSON ResultErrorLevel = String "error"+  toJSON ResultNoteLevel = String "note"+  toJSON ResultNoneLevel = String "none"++instance FromJSON ResultLevel where+  parseJSON = withText "ResultLevel" $ \case+    "warning" -> pure ResultWarningLevel+    "error" -> pure ResultErrorLevel+    "note" -> pure ResultNoteLevel+    "none" -> pure ResultNoneLevel+    _ -> fail "Unknown Result Level"++data ResultBaselineState+  = ResultBaselineNewState+  | ResultBaselineUnchangedState+  | ResultBaselineUpdatedState+  | ResultBaselineAbsentState+  deriving (Eq, Ord, Show)++instance ToJSON ResultBaselineState where+  toJSON ResultBaselineNewState = String "new"+  toJSON ResultBaselineUnchangedState = String "unchanged"+  toJSON ResultBaselineUpdatedState = String "updated"+  toJSON ResultBaselineAbsentState = String "absent"++instance FromJSON ResultBaselineState where+  parseJSON = withText "ResultBaselineState" $ \case+    "new" -> pure ResultBaselineNewState+    "unchanged" -> pure ResultBaselineUnchangedState+    "updated" -> pure ResultBaselineUpdatedState+    "absent" -> pure ResultBaselineAbsentState+    _ -> fail "Unknown ResultBaselineState"+ -- | Represents the results of a run of a static analysis tool.-data Result = MkResult {-    -- | The unique ID of the rule of which this result is an occurrence of.-    resultRuleId :: Text,-    -- | A result-specific message which may refer to specific variable names-    -- etc. which caused the rule to trigger.-    resultMessage :: MultiformatMessageString,-    -- | A list of locations which caused the rule to trigger.-    resultLocations :: [Location],-    -- | An optional override for the default `Level` of the rule.-    resultLevel :: Maybe Level-} deriving (Eq, Show)+data Result+  = MkResult+      { -- | A unique,stable and opaque identifier for the result.+        resultGuid :: Maybe UUID+        -- | The identifier of a logically identical result+      , resultCorrelationGuid :: Maybe UUID+        -- | The unique ID of the rule of which this result is an occurrence of.+      , resultRuleId :: Text+        -- | A reference to the `ReportingDescriptor` for the rule+      , resultRuleIndex :: Maybe Int+        -- | The rule descriptor reference that identifies the report descriptor+      , resultRule :: Maybe ReportingDescriptorReference+        -- | A list of references to taxonomies to which this result belongs.+      , resultTaxa :: Maybe [ReportingDescriptorReference]+        -- | The kind property of the result.+      , resultKind :: Maybe ResultKind+        -- | The level property of the result+      , resultLevel :: Maybe ResultLevel+        -- | A result-specific message which may refer to specific variable names+        -- etc. which caused the rule to trigger.+      , resultMessage :: Message+        -- | The locations property of the result.+      , resultLocations :: [Location]+        -- | The analysisTarget property of the result+      , resultAnalysisTarget :: Maybe ArtifactLocation+        -- | The webRequest property of the result+      , resultWebRequest :: Maybe WebRequest+        -- | The webResponse property of the result+      , resultWebResponse :: Maybe WebResponse+        -- | The fingerprints property of the result+      , resultFingerprints :: Maybe (Map Text Text)+        -- | The partialFingerprints property of the result+      , resultPartialFingerprints :: Maybe (Map Text Text)+        -- | The codeFlows property of the result+      , resultCodeFlows :: Maybe [CodeFlow]+        -- | The graph property of the result+      , resultGraphs :: Maybe [Graph]+        -- | The graph traversal property of the result+      , resultGraphTraversals :: Maybe [GraphTraversal]+        -- | The stacks property of the result+      , resultStacks :: Maybe [Stack]+        -- | The relatedLocations property of the result+      , resultRelatedLocations :: Maybe [Location]+        -- | The suppressions property of the result+      , resultSuppressions :: Maybe [Suppression]+        -- | The baselineState property of the result+      , resultBaselineState :: Maybe ResultBaselineState+        -- | The rank property of the result+      , resultRank :: Maybe Double+        -- | The attachments property of the result+      , resultAttachments :: Maybe [Attachment]+        -- | The workItemUris property of the result+      , resultWorkItemUris :: Maybe [Text]+        -- | The hostedViewerUri property of the result+      , resultHostedViewerUri :: Maybe Text+        -- | The provenance property of the result+      , resultProvenance :: Maybe ResultProvenance+        -- | The fixes property of the result+      , resultFixes :: Maybe [Fix]+        -- | The occurrenceCount property of the result+      , resultOccurrenceCount :: Maybe Int+        -- | The properties property of the Result object+      , resultProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)  instance ToJSON Result where-    toJSON MkResult{..} = object-        [ "ruleId" .= resultRuleId-        , "message" .= resultMessage-        , "locations" .= resultLocations-        , "level" .=? resultLevel-        ]+  toJSON MkResult {..} =+    object+      [ "guid" .=? resultGuid,+        "correlationGuid" .=? resultCorrelationGuid,+        "ruleId" .= resultRuleId,+        "ruleIndex" .=? resultRuleIndex,+        "rule" .=? resultRule,+        "taxa" .=? resultTaxa,+        "kind" .=? resultKind,+        "level" .=? resultLevel,+        "message" .= resultMessage,+        "locations" .= resultLocations,+        "analysisTarget" .=? resultAnalysisTarget,+        "webRequest" .=? resultWebRequest,+        "webResponse" .=? resultWebResponse,+        "fingerprints" .=? resultFingerprints,+        "partialFingerprints" .=? resultPartialFingerprints,+        "codeFlows" .=? resultCodeFlows,+        "graphs" .=? resultGraphs,+        "graphTraversals" .=? resultGraphTraversals,+        "stacks" .=? resultStacks,+        "relatedLocations" .=? resultRelatedLocations,+        "suppressions" .=? resultSuppressions,+        "baselineState" .=? resultBaselineState,+        "rank" .=? resultRank,+        "attachments" .=? resultAttachments,+        "workItemUris" .=? resultWorkItemUris,+        "hostedViewerUri" .=? resultHostedViewerUri,+        "provenance" .=? resultProvenance,+        "fixes" .=? resultFixes,+        "occurrenceCount" .=? resultOccurrenceCount,+        "properties" .=? resultProperties+      ]  instance FromJSON Result where-    parseJSON = withObject "Result" $ \obj ->-        MkResult <$> obj .: "ruleId"-                 <*> obj .: "message"-                 <*> obj .: "locations"-                 <*> obj .: "level"+  parseJSON = withObject "Result" $ \obj ->+    MkResult+      <$> obj .:? "guid"+      <*> obj .:? "correlationGuid"+      <*> obj .: "ruleId"+      <*> obj .:? "ruleIndex"+      <*> obj .:? "rule"+      <*> obj .:? "taxa"+      <*> obj .:? "kind"+      <*> obj .:? "level"+      <*> obj .: "message"+      <*> obj .: "locations"+      <*> obj .:? "analysisTarget"+      <*> obj .:? "webRequest"+      <*> obj .:? "webResponse"+      <*> obj .:? "fingerprints"+      <*> obj .:? "partialFingerprints"+      <*> obj .:? "codeFlows"+      <*> obj .:? "graphs"+      <*> obj .:? "graphTraversals"+      <*> obj .:? "stacks"+      <*> obj .:? "relatedLocations"+      <*> obj .:? "suppressions"+      <*> obj .:? "baselineState"+      <*> obj .:? "rank"+      <*> obj .:? "attachments"+      <*> obj .:? "workItemUris"+      <*> obj .:? "hostedViewerUri"+      <*> obj .:? "provenance"+      <*> obj .:? "fixes"+      <*> obj .:? "occurrenceCount"+      <*> obj .:? "properties"  --------------------------------------------------------------------------------
+ src/Data/SARIF/ResultProvenance.hs view
@@ -0,0 +1,56 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `ResultProvenance` type to represent SARIF artifacts.+module Data.SARIF.ResultProvenance where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.PhysicalLocation+import Data.Text++data ResultProvenance+  = MkResultProvenance+      { -- | The firstDetectionTimeUtc property of the result provenance+        resultProvenanceFirstDetectionTimeUtc :: Maybe Text+        -- | The lastDetectionTimeUtc property of the result provenance+      , resultProvenanceLastDetectionTimeUtc :: Maybe Text+        -- | The firstDetectionRunGuid property of the result provenance+      , resultProvenanceFirstDetectionRunGuid :: Maybe Text+        -- | The lastDetectionRunGuid property of the result provenance+      , resultProvenanceLastDetectionRunGuid :: Maybe Text+        -- | The invocationIndex property of the result provenance+      , resultProvenanceInvocationIndex :: Maybe Int+        -- | The conversionSources property of the result provenance+      , resultProvenanceConversionSources :: Maybe [PhysicalLocation]+        -- | The properties property of the ResultProvenance object+      , resultProvenanceProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON ResultProvenance where+  toJSON MkResultProvenance {..} =+    object+      [ "firstDetectionTimeUtc" .=? resultProvenanceFirstDetectionTimeUtc,+        "lastDetectionTimeUtc" .=? resultProvenanceLastDetectionTimeUtc,+        "firstDetectionRunGuid" .=? resultProvenanceFirstDetectionRunGuid,+        "lastDetectionRunGuid" .=? resultProvenanceLastDetectionRunGuid,+        "invocationIndex" .=? resultProvenanceInvocationIndex,+        "conversionSources" .=? resultProvenanceConversionSources,+        "properties" .=? resultProvenanceProperties+      ]++instance FromJSON ResultProvenance where+  parseJSON = withObject "ResultProvenance" $ \obj ->+    MkResultProvenance+      <$> obj .:? "firstDetectionTimeUtc"+      <*> obj .:? "lastDetectionTimeUtc"+      <*> obj .:? "firstDetectionRunGuid"+      <*> obj .:? "lastDetectionRunGuid"+      <*> obj .:? "invocationIndex"+      <*> obj .:? "conversionSources"+      <*> obj .:? "properties"
src/Data/SARIF/Run.hs view
@@ -5,44 +5,180 @@ -- file in the root directory of this source tree.                            -- -------------------------------------------------------------------------------- --- | Provides the `Run` type which represents a single run of a--- static analysis tool.-module Data.SARIF.Run (-    Run(..)-) where+-- | Provides the `Run` type to represent SARIF artifacts.+module Data.SARIF.Run+  ( Run (..),+    RunColumnKind (..),+  )+where  -------------------------------------------------------------------------------- -import Data.Aeson hiding (Result)-+import Data.Aeson.Optional hiding (Result)+import Data.Map.Strict+import Data.SARIF.Address import Data.SARIF.Artifact-import Data.SARIF.Result (Result(..))-import Data.SARIF.Tool (Tool(..))+import Data.SARIF.ArtifactLocation+import Data.SARIF.AutomationDetails+import Data.SARIF.Conversion+import Data.SARIF.ExternalPropertyFileReferences+import Data.SARIF.Graph+import Data.SARIF.Invocation+import Data.SARIF.LogicalLocation+import Data.SARIF.Result+import Data.SARIF.SpecialLocations+import Data.SARIF.ThreadFlowLocation+import Data.SARIF.Tool+import Data.SARIF.ToolComponent+import Data.SARIF.VersionControlDetails+import Data.SARIF.WebRequest+import Data.SARIF.WebResponse+import Data.Text  -------------------------------------------------------------------------------- +data RunColumnKind+  = RunUtf16CodeUnitsColumnKind+  | RunUnicodeCodePointsColumnKind+  | RunCustomColumnKind Text+  deriving (Eq, Ord, Show)++instance ToJSON RunColumnKind where+  toJSON RunUtf16CodeUnitsColumnKind = String "utf16CodeUnits"+  toJSON RunUnicodeCodePointsColumnKind = String "unicodeCodePoints"+  toJSON (RunCustomColumnKind t) = String t++instance FromJSON RunColumnKind where+  parseJSON = withText "RunColumnKind" $ \case+    "utf16CodeUnits" -> pure RunUtf16CodeUnitsColumnKind+    "unicodeCodePoints" -> pure RunUnicodeCodePointsColumnKind+    other -> pure $ RunCustomColumnKind other+ -- | Represents individual runs of static analysis tools.-data Run = MkRun {-    -- | A description of the tool that was run.-    runTool :: Tool,-    -- | A list of the artifacts that were scanned by the tool.-    runArtifacts :: [Artifact],-    -- | The results produced by the tool as a result of scanning-    -- the artifacts.-    runResults :: [Result]-} deriving (Eq, Show)+data Run+  = MkRun+      { -- | The externalPropertyFileReferences property of a run+        runExternalPropertyFileReferences :: Maybe ExternalPropertyFileReferences+        -- | The automationDetails property of a run+      , runAutomationDetails :: Maybe AutomationDetails+        -- | The runAggregates property of a run+      , runAggregates :: Maybe [AutomationDetails]+        -- | The baselineGuid property of a run+      , runBaselineGuid :: Maybe Text+        -- | The tool property of a run+      , runTool :: Maybe Tool+        -- | The language property of a run+      , runLanguage :: Maybe Text+        -- | The taxonomies property of a run+      , runTaxonomies :: Maybe [ToolComponent]+        -- | The translations property of a run+      , runTranslations :: Maybe [ToolComponent]+        -- | The policies property of a run+      , runPolicies :: Maybe [ToolComponent]+        -- | The invocations property of a run+      , runInvocations :: Maybe [Invocation]+        -- | The conversion property of a run+      , runConversion :: Maybe Conversion+        -- | The versionControlProvenance property of a run+      , runVersionControlProvenance :: Maybe VersionControlDetails+        -- | The originalUriBaseIds property of a run+      , runOriginalUriBaseIds :: Maybe (Map Text ArtifactLocation)+        -- | The artifacts property of a run+      , runArtifacts :: Maybe [Artifact]+        -- | The specialLocations property of a run+      , runSpecialLocations :: Maybe [SpecialLocations]+        -- | The logicalLocations property of a run+      , runLogicalLocations :: Maybe [LogicalLocation]+        -- | The addresses property of a run+      , runAddresses :: Maybe [Address]+        -- | The threadFlowLocations property of a run+      , runThreadFlowLocations :: Maybe [ThreadFlowLocation]+        -- | The graphs property of a run+      , runGraphs :: Maybe [Graph]+        -- | The webRequests property of a run+      , runWebRequests :: Maybe [WebRequest]+        -- | The webResponses property of a run+      , runWebResponses :: Maybe [WebResponse]+        -- | The results property of a run+      , runResults :: Maybe [Result]+        -- | The defaultEncoding property of a run+      , runDefaultEncoding :: Maybe Text+        -- | The defaultSourceLanguage property of a run+      , runDefaultSourceLanguage :: Maybe Text+        -- | The newlineSequences property of a run+      , runNewlineSequences :: Maybe [Text]+        -- | The columnKind property of a run+      , runColumnKind :: Maybe RunColumnKind+        -- | The redactionTokens property of a run+      , runRedactionTokens :: Maybe [Text]+        -- | The properties property of the Run object+      , runProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show) +--------------------------------------------------------------------------------+ instance ToJSON Run where-    toJSON MkRun{..} = object-        [ "tool" .= runTool-        , "artifacts" .= runArtifacts-        , "results" .= runResults-        ]+  toJSON MkRun {..} =+    object+      [ "externalPropertyFileReferences" .=? runExternalPropertyFileReferences,+        "automationDetails" .=? runAutomationDetails,+        "runAggregates" .=? runAggregates,+        "baselineGuid" .=? runBaselineGuid,+        "tool" .=? runTool,+        "language" .=? runLanguage,+        "taxonomies" .=? runTaxonomies,+        "translations" .=? runTranslations,+        "policies" .=? runPolicies,+        "invocations" .=? runInvocations,+        "conversion" .=? runConversion,+        "versionControlProvenance" .=? runVersionControlProvenance,+        "originalUriBaseIds" .=? runOriginalUriBaseIds,+        "artifacts" .=? runArtifacts,+        "specialLocations" .=? runSpecialLocations,+        "logicalLocations" .=? runLogicalLocations,+        "addresses" .=? runAddresses,+        "threadFlowLocations" .=? runThreadFlowLocations,+        "graphs" .=? runGraphs,+        "webRequests" .=? runWebRequests,+        "webResponses" .=? runWebResponses,+        "results" .=? runResults,+        "defaultEncoding" .=? runDefaultEncoding,+        "defaultSourceLanguage" .=? runDefaultSourceLanguage,+        "newlineSequences" .=? runNewlineSequences,+        "columnKind" .=? runColumnKind,+        "redactionTokens" .=? runRedactionTokens,+        "properties" .=? runProperties+      ]  instance FromJSON Run where-    parseJSON = withObject "Run" $ \obj ->-        MkRun <$> obj .: "tool"-              <*> obj .: "artifacts" .!= []-              <*> obj .: "results" .!= []----------------------------------------------------------------------------------+  parseJSON = withObject "Run" $ \obj ->+    MkRun+      <$> obj .:? "externalPropertyFileReferences"+      <*> obj .:? "automationDetails"+      <*> obj .:? "runAggregates"+      <*> obj .:? "baselineGuid"+      <*> obj .:? "tool"+      <*> obj .:? "language"+      <*> obj .:? "taxonomies"+      <*> obj .:? "translations"+      <*> obj .:? "policies"+      <*> obj .:? "invocations"+      <*> obj .:? "conversion"+      <*> obj .:? "versionControlProvenance"+      <*> obj .:? "originalUriBaseIds"+      <*> obj .:? "artifacts"+      <*> obj .:? "specialLocations"+      <*> obj .:? "logicalLocations"+      <*> obj .:? "addresses"+      <*> obj .:? "threadFlowLocations"+      <*> obj .:? "graphs"+      <*> obj .:? "webRequests"+      <*> obj .:? "webResponses"+      <*> obj .:? "results"+      <*> obj .:? "defaultEncoding"+      <*> obj .:? "defaultSourceLanguage"+      <*> obj .:? "newlineSequences"+      <*> obj .:? "columnKind"+      <*> obj .:? "redactionTokens"+      <*> obj .:? "properties"
+ src/Data/SARIF/SpecialLocations.hs view
@@ -0,0 +1,36 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `SpecialLocations` type to represent SARIF artifacts.+module Data.SARIF.SpecialLocations (SpecialLocations (..)) where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.ArtifactLocation+import Data.Text++data SpecialLocations+  = MkSpecialLocations+      { -- | The displayBase property of the special locations+        specialLocationsDisplayBase :: Maybe ArtifactLocation+        -- | The properties property of the SpecialLocations object+      , specialLocationsProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON SpecialLocations where+  toJSON MkSpecialLocations {..} =+    object+      [ "displayBase" .=? specialLocationsDisplayBase,+        "properties" .=? specialLocationsProperties+      ]++instance FromJSON SpecialLocations where+  parseJSON = withObject "SpecialLocations" $ \obj ->+    MkSpecialLocations+      <$> obj .:? "displayBase"+      <*> obj .:? "properties"
+ src/Data/SARIF/Stack.hs view
@@ -0,0 +1,41 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `Stack` type to represent SARIF artifacts.+module Data.SARIF.Stack (Stack (..)) where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.Message+import Data.SARIF.StackFrame+import Data.Text++data Stack+  = MkStack+      { -- | The message property of a thread flow object+        stackMessage :: Maybe Message+        -- | The frames property of a thread flow object+      , stackFrames :: [StackFrame]+        -- | The properties property of the Stack object+      , stackProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON Stack where+  toJSON MkStack {..} =+    object+      [ "message" .=? stackMessage,+        "frames" .= stackFrames,+        "properties" .=? stackProperties+      ]++instance FromJSON Stack where+  parseJSON = withObject "Stack" $ \obj ->+    MkStack+      <$> obj .:? "message"+      <*> obj .: "frames"+      <*> obj .:? "properties"
+ src/Data/SARIF/StackFrame.hs view
@@ -0,0 +1,48 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `StackFrame` type to represent SARIF artifacts.+module Data.SARIF.StackFrame (StackFrame (..)) where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.Location+import Data.Text++data StackFrame+  = MkStackFrame+      { -- | The location property of a stack frame object+        stackFrameLocation :: Maybe Location+        -- | The module property of a stack frame object+      , stackFrameModule :: Maybe Text+        -- | The threadId property of a stack frame object+      , stackFrameThreadId :: Maybe Integer+        -- | The parameters property of a stack frame object+      , stackFrameParameters :: Maybe [Text]+        -- | The properties property of the StackFrame object+      , stackFrameProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON StackFrame where+  toJSON MkStackFrame {..} =+    object+      [ "location" .=? stackFrameLocation,+        "module" .=? stackFrameModule,+        "threadId" .=? stackFrameThreadId,+        "parameters" .=? stackFrameParameters,+        "properties" .=? stackFrameProperties+      ]++instance FromJSON StackFrame where+  parseJSON = withObject "StackFrame" $ \obj ->+    MkStackFrame+      <$> obj .:? "location"+      <*> obj .:? "module"+      <*> obj .:? "threadId"+      <*> obj .:? "parameters"+      <*> obj .:? "properties"
+ src/Data/SARIF/Suppression.hs view
@@ -0,0 +1,80 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `Suppression` type to represent SARIF artifacts.+module Data.SARIF.Suppression (Suppression (..), SuppressionKind (..), SuppressionStatus (..)) where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.Location+import Data.Text+import Data.UUID.Types++data SuppressionKind+  = SuppressionInSourceKind+  | SuppressionExternalKind+  deriving (Eq, Ord, Show)++instance ToJSON SuppressionKind where+  toJSON SuppressionInSourceKind = String "inSource"+  toJSON SuppressionExternalKind = String "external"++instance FromJSON SuppressionKind where+  parseJSON = withText "SuppressionKind" $ \case+    "inSource" -> pure SuppressionInSourceKind+    "external" -> pure SuppressionExternalKind+    _ -> fail "Unknown SuppressionKind"++data SuppressionStatus+  = SuppressionAcceptedStatus+  | SuppressionRejectedStatus+  | SuppressionUnderReviewStatus+  deriving (Eq, Ord, Show)++instance ToJSON SuppressionStatus where+  toJSON SuppressionAcceptedStatus = String "accepted"+  toJSON SuppressionRejectedStatus = String "rejected"+  toJSON SuppressionUnderReviewStatus = String "underReview"++instance FromJSON SuppressionStatus where+  parseJSON = withText "SuppressionStatus" $ \case+    "accepted" -> pure SuppressionAcceptedStatus+    "rejected" -> pure SuppressionRejectedStatus+    "underReview" -> pure SuppressionUnderReviewStatus+    _ -> fail "Unknown SuppressionStatus"++data Suppression+  = MkSuppression+      { suppressionKind :: SuppressionKind+      , suppressionStatus :: Maybe SuppressionStatus+      , suppressionLocation :: Maybe Location+      , suppressionGUID :: Maybe UUID+      , suppressionJustification :: Maybe Text+      , suppressionProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON Suppression where+  toJSON MkSuppression {..} =+    object+      [ "kind" .= suppressionKind,+        "status" .=? suppressionStatus,+        "location" .=? suppressionLocation,+        "guid" .=? suppressionGUID,+        "justification" .=? suppressionJustification,+        "properties" .=? suppressionProperties+      ]++instance FromJSON Suppression where+  parseJSON = withObject "Suppression" $ \o ->+    MkSuppression+      <$> o .: "kind"+      <*> o .:? "status"+      <*> o .:? "location"+      <*> o .:? "guid"+      <*> o .:? "justification"+      <*> o .:? "properties"
+ src/Data/SARIF/ThreadFlow.hs view
@@ -0,0 +1,53 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `ThreadFlow` type to represent SARIF artifacts.+module Data.SARIF.ThreadFlow (ThreadFlow (..)) where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.Message+import Data.SARIF.ThreadFlowLocation+import Data.Text++data ThreadFlow+  = MkThreadFlow+      { -- | The id property of a thread flow object+        threadFlowId :: Maybe Text+        -- | The message property of a thread flow object+      , threadFlowMessage :: Maybe Message+        -- | The  initialState property of a thread flow object+      , threadFlowInitialState :: Maybe (Map Text Text)+        -- | The immutableState property of a thread flow object+      , threadFlowImmutableState :: Maybe (Map Text Text)+        -- | The locations property of a thread flow object+      , threadFlowLocations :: [ThreadFlowLocation]+        -- | The properties property of the ThreadFlow object+      , threadFlowProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON ThreadFlow where+  toJSON MkThreadFlow {..} =+    object+      [ "id" .=? threadFlowId,+        "message" .=? threadFlowMessage,+        "initialState" .=? threadFlowInitialState,+        "immutableState" .=? threadFlowImmutableState,+        "locations" .= threadFlowLocations,+        "properties" .=? threadFlowProperties+      ]++instance FromJSON ThreadFlow where+  parseJSON = withObject "ThreadFlow" $ \obj ->+    MkThreadFlow+      <$> obj .:? "id"+      <*> obj .:? "message"+      <*> obj .:? "initialState"+      <*> obj .:? "immutableState"+      <*> obj .: "locations"+      <*> obj .:? "properties"
+ src/Data/SARIF/ThreadFlowLocation.hs view
@@ -0,0 +1,185 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `ThreadFlowLocation` type to represent SARIF artifacts.+module Data.SARIF.ThreadFlowLocation (ThreadFlowLocation (..), ThreadFlowLocationKind (..), ThreadFlowImportance (..)) where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.Location+import Data.SARIF.MultiformatMessageString+import Data.SARIF.ReportingDescriptorReference+import Data.SARIF.Stack+import Data.SARIF.WebRequest+import Data.SARIF.WebResponse+import Data.Text+import Data.Time++data ThreadFlowLocationKind+  = ThreadFlowLocationAcquireKind+  | ThreadFlowLocationReleaseKind+  | ThreadFlowLocationEnterKind+  | ThreadFlowLocationExitKind+  | ThreadFlowLocationCallKind+  | ThreadFlowLocationReturnKind+  | ThreadFlowLocationBranchKind+  | ThreadFlowLocationTaintKind+  | ThreadFlowLocationFunctionKind+  | ThreadFlowLocationHandlerKind+  | ThreadFlowLocationLockKind+  | ThreadFlowLocationMemoryKind+  | ThreadFlowLocationResourceKind+  | ThreadFlowLocationScopeKind+  | ThreadFlowLocationValueKind+  | ThreadFlowLocationImplicitKind+  | ThreadFlowLocationFalseKind+  | ThreadFlowLocationTrueKind+  | ThreadFlowLocationCautionKind+  | ThreadFlowLocationDangerKind+  | ThreadFlowLocationUnknownKind+  | ThreadFlowLocationUnreachableKind+  | ThreadFlowLocationCustomKind Text+  deriving (Eq, Ord, Show)++instance ToJSON ThreadFlowLocationKind where+  toJSON ThreadFlowLocationAcquireKind = String "acquire"+  toJSON ThreadFlowLocationReleaseKind = String "release"+  toJSON ThreadFlowLocationEnterKind = String "enter"+  toJSON ThreadFlowLocationExitKind = String "exixt"+  toJSON ThreadFlowLocationCallKind = String "call"+  toJSON ThreadFlowLocationReturnKind = String "return"+  toJSON ThreadFlowLocationBranchKind = String "branch"+  toJSON ThreadFlowLocationTaintKind = String "taint"+  toJSON ThreadFlowLocationFunctionKind = String "function"+  toJSON ThreadFlowLocationHandlerKind = String "handler"+  toJSON ThreadFlowLocationLockKind = String "lock"+  toJSON ThreadFlowLocationMemoryKind = String "memory"+  toJSON ThreadFlowLocationResourceKind = String "resource"+  toJSON ThreadFlowLocationScopeKind = String "scope"+  toJSON ThreadFlowLocationValueKind = String "value"+  toJSON ThreadFlowLocationImplicitKind = String "implicit"+  toJSON ThreadFlowLocationFalseKind = String "false"+  toJSON ThreadFlowLocationTrueKind = String "true"+  toJSON ThreadFlowLocationCautionKind = String "caution"+  toJSON ThreadFlowLocationDangerKind = String "danger"+  toJSON ThreadFlowLocationUnknownKind = String "unknown"+  toJSON ThreadFlowLocationUnreachableKind = String "unreachable"+  toJSON (ThreadFlowLocationCustomKind text) = String text++instance FromJSON ThreadFlowLocationKind where+  parseJSON = withText "ThreadFlowLocationKind" $ \case+    "acquire" -> pure ThreadFlowLocationAcquireKind+    "release" -> pure ThreadFlowLocationReleaseKind+    "enter" -> pure ThreadFlowLocationEnterKind+    "exit" -> pure ThreadFlowLocationExitKind+    "call" -> pure ThreadFlowLocationCallKind+    "return" -> pure ThreadFlowLocationReturnKind+    "branch" -> pure ThreadFlowLocationBranchKind+    "taint" -> pure ThreadFlowLocationTaintKind+    "function" -> pure ThreadFlowLocationFunctionKind+    "handler" -> pure ThreadFlowLocationHandlerKind+    "lock" -> pure ThreadFlowLocationLockKind+    "memory" -> pure ThreadFlowLocationMemoryKind+    "resource" -> pure ThreadFlowLocationResourceKind+    "scope" -> pure ThreadFlowLocationScopeKind+    "value" -> pure ThreadFlowLocationValueKind+    "implicit" -> pure ThreadFlowLocationImplicitKind+    "false" -> pure ThreadFlowLocationFalseKind+    "true" -> pure ThreadFlowLocationTrueKind+    "caution" -> pure ThreadFlowLocationCautionKind+    "danger" -> pure ThreadFlowLocationDangerKind+    "unknown" -> pure ThreadFlowLocationUnknownKind+    "unreachable" -> pure ThreadFlowLocationUnreachableKind+    custom -> pure $ ThreadFlowLocationCustomKind custom++data ThreadFlowImportance+  = ThreadFlowImportantImportance+  | ThreadFlowEssentialImportance+  | ThreadFlowUnimportantImportance+  deriving (Eq, Ord, Show)++instance ToJSON ThreadFlowImportance where+  toJSON ThreadFlowImportantImportance = String "important"+  toJSON ThreadFlowEssentialImportance = String "essential"+  toJSON ThreadFlowUnimportantImportance = String "unimportant"++instance FromJSON ThreadFlowImportance where+  parseJSON = withText "ThreadFlowImportance" $ \case+    "important" -> pure ThreadFlowImportantImportance+    "essential" -> pure ThreadFlowEssentialImportance+    "unimportant" -> pure ThreadFlowUnimportantImportance+    _ -> fail "Unknown ThreadFlowImportance"++data ThreadFlowLocation+  = MkThreadFlowLocation+      { -- | The index property of a thread flow location object+        threadFlowLocationIndex :: Maybe Integer+        -- | The location property of a thread flow location object+      , threadFlowLocationLocation :: Location+        -- | The module property of a thread flow location object+      , threadFlowLocationModule :: Maybe Text+        -- | The stack property of a thread flow location object+      , threadFlowLocationStack :: Maybe Stack+        -- | The webRequest property of a thread flow location object+      , threadFlowLocationWebRequest :: Maybe WebRequest+        -- | The webResponse property of a thread flow location object+      , threadFlowLocationWebResponse :: Maybe WebResponse+        -- | The kinds property of a thread flow location object+      , threadFlowLocationKinds :: Maybe [ThreadFlowLocationKind]+        -- | The state property of a thread flow location object+      , threadFlowLocationState :: Maybe (Map Text MultiformatMessageString)+        -- | The nestingLevel property of a thread flow locatiob object+      , threadFlowLocationNestingLevel :: Maybe Integer+        -- | The executionOrder property of a thread flow location object+      , threadFlowLocationExecutionOrder :: Maybe Integer+        -- | The executionTimeUtc property of a thread flow location object+      , threadFlowLocationExecutionTimeUtc :: Maybe UTCTime+        -- | The importance property of a thread flow location object+      , threadFlowLocationImportance :: Maybe Integer+        -- | The taxa property of a thread flow location object+      , threadFlowLocationTaxa :: Maybe [ReportingDescriptorReference]+        -- | The properties property of the ThreadFlowLocation object+      , threadFlowLocationProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON ThreadFlowLocation where+  toJSON MkThreadFlowLocation {..} =+    object+      [ "index" .=? threadFlowLocationIndex,+        "location" .= threadFlowLocationLocation,+        "module" .=? threadFlowLocationModule,+        "stack" .=? threadFlowLocationStack,+        "webRequest" .=? threadFlowLocationWebRequest,+        "webResponse" .=? threadFlowLocationWebResponse,+        "kinds" .=? threadFlowLocationKinds,+        "state" .=? threadFlowLocationState,+        "nestingLevel" .=? threadFlowLocationNestingLevel,+        "executionOrder" .=? threadFlowLocationExecutionOrder,+        "executionTimeUtc" .=? threadFlowLocationExecutionTimeUtc,+        "importance" .=? threadFlowLocationImportance,+        "taxa" .=? threadFlowLocationTaxa,+        "properties" .=? threadFlowLocationProperties+      ]++instance FromJSON ThreadFlowLocation where+  parseJSON = withObject "ThreadFlowLocation" $ \obj ->+    MkThreadFlowLocation+      <$> obj .:? "index"+      <*> obj .: "location"+      <*> obj .:? "module"+      <*> obj .:? "stack"+      <*> obj .:? "webRequest"+      <*> obj .:? "webResponse"+      <*> obj .:? "kinds"+      <*> obj .:? "state"+      <*> obj .:? "nestingLevel"+      <*> obj .:? "executionOrder"+      <*> obj .:? "executionTimeUtc"+      <*> obj .:? "importance"+      <*> obj .:? "taxa"+      <*> obj .:? "properties"
src/Data/SARIF/Tool.hs view
@@ -5,94 +5,38 @@ -- file in the root directory of this source tree.                            -- -------------------------------------------------------------------------------- --- | Provides the `Tool` type which is used to describe static analysis tools.-module Data.SARIF.Tool (-    Tool(..),-    ToolComponent(..),-    defaultToolComponent-) where+-- | Provides the `Tool` type to represent SARIF artifacts. ---------------------------------------------------------------------------------+module Data.SARIF.Tool+  ( Tool (..),+  )+where -import GHC.Generics+--------------------------------------------------------------------------------  import Data.Aeson.Optional-import Data.Text-import Data.UUID.Types--import Data.SARIF.ReportingDescriptor----------------------------------------------------------------------------------+import Data.SARIF.ToolComponent --- | Used to describe static analysis tools.-data Tool = MkTool {-    -- | The description of the tool itself.-    toolDriver :: ToolComponent,-    -- | Descriptions of any extensions to the tool that were used.-    toolExtensions :: [ToolComponent]-} deriving (Eq, Show, Generic)+data Tool+  = MkTool+      { -- | The description of the tool itself.+        toolDriver :: ToolComponent+        -- | Descriptions of any extensions to the tool that were used.+      , toolExtensions :: Maybe [ToolComponent]+      }+  deriving (Eq, Ord, Show)  instance ToJSON Tool where-    toJSON MkTool{..} = object-        [ "driver" .= toolDriver-        , "extensions" .= toolExtensions-        ]+  toJSON MkTool {..} =+    object+      [ "driver" .= toolDriver,+        "extensions" .=? toolExtensions+      ]  instance FromJSON Tool where-    parseJSON = withObject "Tool" $ \obj ->-        MkTool <$> obj .: "driver"-               <*> obj .: "extensions" .!= []---- | A description of a tool component, such as a static analysis tool or--- an extension to one.-data ToolComponent = MkToolComponent {-    -- | The short name of the tool component.-    toolComponentName :: Maybe Text,-    -- | The full name of the tool component.-    toolComponentFullName :: Maybe Text,-    -- | The semver of the tool component.-    toolComponentSemanticVersion :: Maybe Text,-    -- | The version of the tool component.-    toolComponentVersion :: Maybe Text,-    -- | A GUID which identifies the tool component.-    toolComponentGUID :: Maybe UUID,-    -- | A URI pointing to more information about the tool component.-    toolComponentInformationUri :: Maybe Text,-    -- | A list of rules that the tool component applies.-    toolComponentRules :: [ReportingDescriptor]-} deriving (Eq, Show, Generic)--instance ToJSON ToolComponent where-    toJSON MkToolComponent{..} = object-        [ "name" .= toolComponentName-        , "fullName" .=? toolComponentFullName-        , "semanticVersion" .=? toolComponentSemanticVersion-        , "version" .=? toolComponentVersion-        , "guid" .=? toolComponentGUID-        , "informationUri" .=? toolComponentInformationUri-        , "rules" .= toolComponentRules-        ]--instance FromJSON ToolComponent where-    parseJSON = withObject "ToolComponent" $ \obj ->-        MkToolComponent <$> obj .: "name"-                        <*> obj .: "fullName"-                        <*> obj .:? "semanticVersion"-                        <*> obj .:? "version"-                        <*> obj .:? "guid"-                        <*> obj .:? "informationUri"-                        <*> obj .: "rules" .!= []---- | `defaultToolComponent` is a default value of the `ToolComponent` type.-defaultToolComponent :: ToolComponent-defaultToolComponent = MkToolComponent{-    toolComponentName = Nothing,-    toolComponentFullName = Nothing,-    toolComponentSemanticVersion = Nothing,-    toolComponentVersion = Nothing,-    toolComponentGUID = Nothing,-    toolComponentInformationUri = Nothing,-    toolComponentRules = []-}+  parseJSON = withObject "tool" $ \obj ->+    MkTool+      <$> obj .: "driver"+      <*> (obj .:? "extensions") .!= Just []  --------------------------------------------------------------------------------
+ src/Data/SARIF/ToolComponent.hs view
@@ -0,0 +1,159 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `ToolComponent` type to represent SARIF artifacts.+module Data.SARIF.ToolComponent (ToolComponent (..)) where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.ArtifactLocation+import Data.SARIF.MultiformatMessageString+import Data.SARIF.ReportingDescriptor+import Data.SARIF.ToolComponentReference+import Data.SARIF.TranslationMetadata+import Data.Text+import Data.Time+import Data.UUID.Types++data ToolComponentContent+  = ToolComponentLocalizedDataContent+  | ToolComponentContentNonLocalizedData+  deriving (Eq, Ord, Show)++instance ToJSON ToolComponentContent where+  toJSON ToolComponentLocalizedDataContent = String "localizedData"+  toJSON ToolComponentContentNonLocalizedData = String "nonLocalizedData"++instance FromJSON ToolComponentContent where+  parseJSON = withText "ToolComponentContent" $ \case+    "localizedData" -> pure ToolComponentLocalizedDataContent+    "nonLocalizedData" -> pure ToolComponentContentNonLocalizedData+    _ -> fail "Unknown ToolComponentContent"++-- | A description of a tool component, such as a static analysis tool or+-- an extension to one.+data ToolComponent+  = MkToolComponent+      { -- | A GUID which identifies the tool component.+        toolComponentGUID :: Maybe UUID+        -- | The short name of the tool component.+      , toolComponentName :: Maybe Text+        -- | The full name of the tool component.+      , toolComponentFullName :: Maybe Text+        -- | The name of the product to which the tool component belongs.+      , toolComponentProduct :: Maybe Text+        -- | The name of the suite of products to which the tool component belongs.+      , toolComponentProductSuit :: Maybe Text+        -- | The semver of the tool component.+      , toolComponentSemanticVersion :: Maybe Text+        -- | The version of the tool component.+      , toolComponentVersion :: Maybe Text+        -- | The UTC date and time at which the tool component was released.+      , toolComponentReleaseDateUtc :: Maybe UTCTime+        -- | A URI for downloading this tool component version.+      , toolComponentDownloadUri :: Maybe Text+        -- | A URI pointing to more information about the tool component.+      , toolComponentInformationUri :: Maybe Text+        -- | The name of the company or organization that produced the tool componen+      , toolComponentOrganization :: Maybe Text+        -- | One sentence description of the tool component.+      , toolComponentShortDescription :: Maybe MultiformatMessageString+        -- | A full description of the tool component.+      , toolComponentFullDescription :: Maybe MultiformatMessageString+        -- | the language of the string contained in the component+      , toolComponentLanguage :: Maybe Text+        -- | Mapping from Message ID to its corresponding message string.+      , toolComponentGlobalMessageStrings :: Maybe (Map Text MultiformatMessageString)+        -- | A list of rules that the tool component applies.+      , toolComponentRules :: Maybe [ReportingDescriptor]+        -- | A list of notifications information provided by the tool component+      , toolComponentNotifications :: Maybe [ReportingDescriptor]+        -- | A list of taxonomies that+      , toolComponentTaxa :: Maybe [ReportingDescriptor]+        -- | The supportedTaxonomies property of the tool component+      , toolComponentSupportedTaxonomies :: Maybe [ToolComponentReference]+        -- | The translationMetadata property of the tool component+      , toolComponentTranslationMetadata :: Maybe TranslationMetadata+        -- | The locations property of the tool component+      , toolComponentLocations :: Maybe [ArtifactLocation]+        -- | The contents property of the tool component+      , toolComponentContents :: Maybe [Text]+        -- | The isComprehensive property of the tool component+      , toolComponentIsComprehensive :: Maybe Bool+        -- | The localizedDataSemanticVersion property of the tool component+      , toolComponentLocalizedDataSemanticVersion :: Maybe Text+        -- | The minimumRequiredLocalizedDataSemanticVersion property of the tool component+      , toolComponentMinimumRequiredLocalizedDataSemanticVersion :: Maybe Text+        -- | The associatedComponent property of the tool component+      , toolComponentAssociatedComponent :: Maybe ToolComponentReference+        -- | The properties property of a ToolComponent object+      , toolComponentProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON ToolComponent where+  toJSON MkToolComponent {..} =+    object+      [ "guid" .=? toolComponentGUID,+        "name" .= toolComponentName,+        "fullName" .=? toolComponentFullName,+        "semanticVersion" .=? toolComponentSemanticVersion,+        "version" .=? toolComponentVersion,+        "releaseDateUtc" .=? toolComponentReleaseDateUtc,+        "downloadUri" .=? toolComponentDownloadUri,+        "informationUri" .=? toolComponentInformationUri,+        "organization" .=? toolComponentOrganization,+        "shortDescription" .=? toolComponentShortDescription,+        "fullDescription" .=? toolComponentFullDescription,+        "language" .=? toolComponentLanguage,+        "globalMessageStrings" .=? toolComponentGlobalMessageStrings,+        "rules" .=? toolComponentRules,+        "notifications" .=? toolComponentNotifications,+        "taxa" .=? toolComponentTaxa,+        "supportedTaxonomies" .=? toolComponentSupportedTaxonomies,+        "translationMetadata" .=? toolComponentTranslationMetadata,+        "locations" .=? toolComponentLocations,+        "contents" .=? toolComponentContents,+        "isComprehensive" .=? toolComponentIsComprehensive,+        "localizedDataSemanticVersion" .=? toolComponentLocalizedDataSemanticVersion,+        "minimumRequiredLocalizedDataSemanticVersion"+          .=? toolComponentMinimumRequiredLocalizedDataSemanticVersion,+        "associatedComponent"+          .=? toolComponentAssociatedComponent,+        "properties" .=? toolComponentProperties+      ]++instance FromJSON ToolComponent where+  parseJSON = withObject "ToolComponent" $ \obj ->+    MkToolComponent+      <$> obj .:? "guid"+      <*> obj .:? "name"+      <*> obj .:? "fullName"+      <*> obj .:? "product"+      <*> obj .:? "productSuite"+      <*> obj .:? "semanticVersion"+      <*> obj .:? "version"+      <*> obj .:? "releaseDateUtc"+      <*> obj .:? "downloadUri"+      <*> obj .:? "informationUri"+      <*> obj .:? "organization"+      <*> obj .:? "shortDescription"+      <*> obj .:? "fullDescription"+      <*> obj .:? "language"+      <*> obj .:? "globalMessageStrings"+      <*> obj .:? "rules"+      <*> obj .:? "notifications"+      <*> obj .:? "taxa"+      <*> obj .:? "supportedTaxonomies"+      <*> obj .:? "translationMetadata"+      <*> obj .:? "locations"+      <*> obj .:? "contents"+      <*> obj .:? "isComprehensive"+      <*> obj .:? "localizedDataSemanticVersion"+      <*> obj .:? "minimumRequiredLocalizedDataSemanticVersion"+      <*> obj .:? "associatedComponent"+      <*> obj .:? "properties"
+ src/Data/SARIF/ToolComponentReference.hs view
@@ -0,0 +1,49 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `ToolComponentReference` type to represent SARIF artifacts.+module Data.SARIF.ToolComponentReference+  ( ToolComponentReference (..),+  )+where++--------------------------------------------------------------------------------++import Data.Aeson.Optional+import Data.Map.Strict+import Data.Text+import Data.UUID.Types++data ToolComponentReference+  = MkToolComponentReference+      { -- | A name which should equals to the `name` property of a toolComponent+        toolComponentReferenceName :: Maybe Text+        -- | An index into the `extensions` array+      , toolComponentReferenceIndex :: Maybe Text+        -- | A GUID  which should equals to the `guid` property of a toolComponent+      , toolComponentReferenceGuid :: Maybe UUID+        -- | The properties property of a ToolComponentReference object+      , toolComponentReferenceProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON ToolComponentReference where+  toJSON MkToolComponentReference {..} =+    object+      [ "name" .=? toolComponentReferenceName,+        "index" .=? toolComponentReferenceIndex,+        "guid" .=? toolComponentReferenceGuid,+        "properties" .=? toolComponentReferenceProperties+      ]++instance FromJSON ToolComponentReference where+  parseJSON = withObject "ToolComponentReference" $ \obj ->+    MkToolComponentReference+      <$> (obj .:? "name")+      <*> (obj .:? "index")+      <*> obj .:? "guid"+      <*> obj .:? "properties"
+ src/Data/SARIF/TranslationMetadata.hs view
@@ -0,0 +1,56 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `TranslationMetadata` type to represent SARIF artifacts.+module Data.SARIF.TranslationMetadata (TranslationMetadata (..)) where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.MultiformatMessageString+import Data.Text++data TranslationMetadata+  = MkTranslationMetadata+      { -- | the name property of the translation metadata+        translationMetadataName :: Text+        -- | The fullName property of the translation metadata+      , translationMetadataFullName :: Maybe Text+        -- | The shortDescription property of the translation metadata+      , translationMetadataShortDescription :: Maybe MultiformatMessageString+        -- | The fullDescription property of the translation metadata+      , translationMetadataFullDescription :: Maybe MultiformatMessageString+        -- | The downloadUri property of the translation metadata+      , translationMetadataDownloadUri :: Maybe Text+        -- | The informationUri property of the translation metadata+      , translationMetadataInformationUri :: Maybe Text+        -- | The properties property of a TranslationMetadata object+      , translationMetadataProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON TranslationMetadata where+  toJSON MkTranslationMetadata {..} =+    object+      [ "name" .= translationMetadataName,+        "fullName" .=? translationMetadataFullName,+        "shortDescription" .=? translationMetadataShortDescription,+        "fullDescription" .=? translationMetadataFullDescription,+        "downloadUri" .=? translationMetadataDownloadUri,+        "informationUri" .=? translationMetadataInformationUri,+        "properties" .=? translationMetadataProperties+      ]++instance FromJSON TranslationMetadata where+  parseJSON = withObject "TranslationMetadata" $ \obj ->+    MkTranslationMetadata+      <$> obj .: "name"+      <*> obj .:? "fullName"+      <*> obj .:? "shortDescription"+      <*> obj .:? "fullDescription"+      <*> obj .:? "downloadUri"+      <*> obj .:? "informationUri"+      <*> obj .:? "properties"
+ src/Data/SARIF/VersionControlDetails.hs view
@@ -0,0 +1,56 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `VersionControlDetails` type to represent SARIF artifacts.+module Data.SARIF.VersionControlDetails (VersionControlDetails (..)) where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.ArtifactLocation+import Data.Text++data VersionControlDetails+  = MkVersionControlDetails+      { -- | The repositoryUri property of the version control details+        versionControlDetailsRepositoryUri :: Text+        -- | The revisionId property of the version control details+      , versionControlDetailsRevisionId :: Text+        -- | The branch property of the version control details+      , versionControlDetailsBranch :: Maybe Text+        -- | The revisionTag property of the version control details+      , versionControlDetailsRevisionTag :: Maybe Text+        -- | The asOfTimeUtc property of the version control details+      , versionControlDetailsAsOfTimeUtc :: Maybe Text+        -- | The mappedTo property of the version control details+      , versionControlDetailsMappedTo :: Maybe ArtifactLocation+        -- | The properties property of a VersionControlDetails object+      , versionControlDetailsProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON VersionControlDetails where+  toJSON MkVersionControlDetails {..} =+    object+      [ "repositoryUri" .= versionControlDetailsRepositoryUri,+        "revisionId" .= versionControlDetailsRevisionId,+        "branch" .=? versionControlDetailsBranch,+        "revisionTag" .=? versionControlDetailsRevisionTag,+        "asOfTimeUtc" .=? versionControlDetailsAsOfTimeUtc,+        "mappedTo" .=? versionControlDetailsMappedTo,+        "properties" .=? versionControlDetailsProperties+      ]++instance FromJSON VersionControlDetails where+  parseJSON = withObject "VersionControlDetails" $ \obj ->+    MkVersionControlDetails+      <$> obj .: "repositoryUri"+      <*> obj .: "revisionId"+      <*> obj .:? "branch"+      <*> obj .:? "revisionTag"+      <*> obj .:? "asOfTimeUtc"+      <*> obj .:? "mappedTo"+      <*> obj .:? "properties"
+ src/Data/SARIF/WebRequest.hs view
@@ -0,0 +1,67 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `WebRequest` type to represent SARIF artifacts.+module Data.SARIF.WebRequest+  ( WebRequest (..),+  )+where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.ArtifactContent+import Data.Text++data WebRequest+  = MkWebRequest+      { -- | The index property of a web request object+        webRequestIndex :: Maybe Integer+        -- | The protocal property of a web request object+      , webRequestProtocol :: Text+        -- | The version property of a web request object+      , webRequestVersion :: Text+        -- | The target property of a web request object+      , webRequestTarget :: Text+        -- | The method property of a web request object+      , webRequestMethod :: Text+        -- | The headers property of a web request object+      , webRequestHeaders :: Map Text Text+        -- | The parameters property of a web request object+      , webRequestParameters :: Maybe (Map Text Text)+        -- | The body property of a web request object+      , webRequestBody :: Maybe ArtifactContent+        -- | The properties property of a WebRequest object+      , webRequestProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON WebRequest where+  toJSON MkWebRequest {..} =+    object+      [ "index" .=? webRequestIndex,+        "protocol" .= webRequestProtocol,+        "version" .= webRequestVersion,+        "target" .= webRequestTarget,+        "method" .= webRequestMethod,+        "headers" .= webRequestHeaders,+        "parameters" .=? webRequestParameters,+        "body" .=? webRequestBody,+        "properties" .=? webRequestProperties+      ]++instance FromJSON WebRequest where+  parseJSON = withObject "WebRequest" $ \obj ->+    MkWebRequest+      <$> obj .:? "index"+      <*> obj .: "protocol"+      <*> obj .: "version"+      <*> obj .: "target"+      <*> obj .: "method"+      <*> obj .: "headers"+      <*> obj .:? "parameters"+      <*> obj .:? "body"+      <*> obj .:? "properties"
+ src/Data/SARIF/WebResponse.hs view
@@ -0,0 +1,67 @@+--------------------------------------------------------------------------------+-- SARIF implementation for Haskell+--------------------------------------------------------------------------------+-- This source code is licensed under the MIT license found in the LICENSE    --+-- file in the root directory of this source tree.                            --+--------------------------------------------------------------------------------++-- | Provides the `WebResponse` type to represent SARIF artifacts.+module Data.SARIF.WebResponse+  ( WebResponse (..),+  )+where++import Data.Aeson.Optional+import Data.Map.Strict+import Data.SARIF.ArtifactContent+import Data.Text++data WebResponse+  = MkWebResponse+      { -- | The index property of a web response object+        webResponseIndex :: Maybe Integer+        -- | The protocal property of a web request object+      , webResponseProtocol :: Text+        -- | The version property of a web response object+      , webResponseVersion :: Text+        -- | The target property of a web response object+      , webResponseStatusCode :: Integer+        -- | The method property of a web response object+      , webResponseReasonPhrase :: Text+        -- | The headers property of a web response object+      , webResponseHeaders :: Map Text Text+        -- | The body property of a web response object+      , webResponseBody :: Maybe ArtifactContent+        -- | The noResponseReceived property of a web response object+      , webResponseNoResponseReceived :: Maybe Bool+        -- | The properties property of a WebResponse object+      , webResponseProperties :: Maybe (Map Text Value)+      }+  deriving (Eq, Ord, Show)++instance ToJSON WebResponse where+  toJSON MkWebResponse {..} =+    object+      [ "index" .=? webResponseIndex,+        "protocol" .= webResponseProtocol,+        "version" .= webResponseVersion,+        "statusCode" .= webResponseStatusCode,+        "reasonPhrase" .= webResponseReasonPhrase,+        "headers" .= webResponseHeaders,+        "body" .=? webResponseBody,+        "noResponseReceived" .=? webResponseNoResponseReceived,+        "properties" .=? webResponseProperties+      ]++instance FromJSON WebResponse where+  parseJSON = withObject "WebResponse" $ \obj ->+    MkWebResponse+      <$> obj .:? "index"+      <*> obj .: "protocol"+      <*> obj .: "version"+      <*> obj .: "statusCode"+      <*> obj .: "reasonPhrase"+      <*> obj .: "headers"+      <*> obj .:? "body"+      <*> obj .:? "noResponseReceived"+      <*> obj .:? "properties"