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 +4/−0
- README.md +11/−0
- sarif.cabal +48/−2
- src/Data/Aeson/Optional.hs +1/−1
- src/Data/SARIF.hs +47/−3
- src/Data/SARIF/Address.hs +115/−0
- src/Data/SARIF/Artifact.hs +157/−20
- src/Data/SARIF/ArtifactChange.hs +41/−0
- src/Data/SARIF/ArtifactContent.hs +47/−0
- src/Data/SARIF/ArtifactLocation.hs +52/−0
- src/Data/SARIF/Attachment.hs +51/−0
- src/Data/SARIF/AutomationDetails.hs +48/−0
- src/Data/SARIF/CodeFlow.hs +37/−0
- src/Data/SARIF/ConfigurationOverride.hs +41/−0
- src/Data/SARIF/Conversion.hs +46/−0
- src/Data/SARIF/Edge.hs +49/−0
- src/Data/SARIF/EdgeTraversal.hs +50/−0
- src/Data/SARIF/Exception.hs +48/−0
- src/Data/SARIF/ExternalProperties.hs +47/−0
- src/Data/SARIF/ExternalPropertyFileReference.hs +44/−0
- src/Data/SARIF/ExternalPropertyFileReferences.hs +96/−0
- src/Data/SARIF/Fix.hs +41/−0
- src/Data/SARIF/Graph.hs +46/−0
- src/Data/SARIF/GraphTraversal.hs +58/−0
- src/Data/SARIF/Invocation.hs +134/−0
- src/Data/SARIF/Level.hs +24/−26
- src/Data/SARIF/Location.hs +51/−82
- src/Data/SARIF/LocationRelationship.hs +71/−0
- src/Data/SARIF/Log.hs +34/−34
- src/Data/SARIF/LogicalLocation.hs +129/−0
- src/Data/SARIF/Message.hs +52/−0
- src/Data/SARIF/MultiformatMessageString.hs +28/−34
- src/Data/SARIF/Node.hs +49/−0
- src/Data/SARIF/Notification.hs +88/−0
- src/Data/SARIF/PhysicalLocation.hs +55/−0
- src/Data/SARIF/Rectangle.hs +52/−0
- src/Data/SARIF/Region.hs +82/−0
- src/Data/SARIF/Replacement.hs +41/−0
- src/Data/SARIF/ReportingConfiguration.hs +53/−0
- src/Data/SARIF/ReportingDescriptor.hs +80/−93
- src/Data/SARIF/ReportingDescriptorReference.hs +54/−0
- src/Data/SARIF/ReportingDescriptorRelationship.hs +87/−0
- src/Data/SARIF/Result.hs +223/−31
- src/Data/SARIF/ResultProvenance.hs +56/−0
- src/Data/SARIF/Run.hs +165/−29
- src/Data/SARIF/SpecialLocations.hs +36/−0
- src/Data/SARIF/Stack.hs +41/−0
- src/Data/SARIF/StackFrame.hs +48/−0
- src/Data/SARIF/Suppression.hs +80/−0
- src/Data/SARIF/ThreadFlow.hs +53/−0
- src/Data/SARIF/ThreadFlowLocation.hs +185/−0
- src/Data/SARIF/Tool.hs +24/−80
- src/Data/SARIF/ToolComponent.hs +159/−0
- src/Data/SARIF/ToolComponentReference.hs +49/−0
- src/Data/SARIF/TranslationMetadata.hs +56/−0
- src/Data/SARIF/VersionControlDetails.hs +56/−0
- src/Data/SARIF/WebRequest.hs +67/−0
- src/Data/SARIF/WebResponse.hs +67/−0
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 ++++[](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"