R# Schema changes between SARIF v1 and v2
This document summarizes the changes in the SARIF JSON schema between v1 (the version defined by the initial working draft and implemented by many Microsoft tools such as its C++, C#, and VB compilers) and v2 (the first public version released by the OASIS SARIF TC).
The changes are presented in order of approval. In some cases, a later change overrides an earlier change. These overrides are noted on the earlier change.
-
Remove the following properties:
annotatedCodeLocation.id
annotatedCodeLocation.essential
.
These properties, defined in the JSON schema but marked "OBSOLETE", were holdovers from versions of the SARIF format prior to the first working draft.
-
Issue 25:
result.message
is not required.Issue 25 clarifies that one of
result.message
orresult.templatedMessage
is required, which means that the schema can't mark themessage
property asrequired
.2018/03/20: OBSOLETE. There is no longer a
result.templatedMessage
property. Theresult.message
property is now amessage
object, whose schema is defined below in #84 (localization) -
Issue #27: "Add a help property to rule"
In the
rule
object:- Add the property
help
of typestring
, optional.
2018/03/20: As of #84,
rule.help
is now amessage
object. - Add the property
-
Issue #33: "Should we allow formatting in messages?"
Add the following optional properties, containing rich text messages:
annotatedCodeLocation.richMessage
annotation.richMessage
codeFlow.richMessage
fix.richDescription
result.richMessage
rule.richDescription
rule.richHelp
rule.richMessageTemplates
stack.richMessage
stackFrame.richMessage
Due to confusion about the term "formatted message" (some people thought it meant "messages containing Markdown", although the spec originally used it to mean "messages with
{n}
replacement sequences"), rename the following objects:formattedMessage
→templatedMessage
For the same reason, rename the following properties:
formattedMessage.formatId
→templatedMessage.templateId
result.formattedRuleMessage
→result.templatedMessage
rule.messageFormats
→rule.messageTemplates
Add the following optional property with the specified default value:
run.richMessageMimeType
:"text/markdown;variant=GFM"
.
2018/03/20: OBSOLETE except for
run.richMessageMimeType
. These properties are now subsumed into the correspondingmessage
properties, which are nowmessage
objects. -
Issue #61: "Provide a format for links embedded in our plain text messages"
In the
physicalLocation
object:- Add the property
id
of typeinteger
, optional.
- Add the property
-
Issue #69: "Provide a physicalLocation on a stack frame"
In the
stackFrame object
:- Remove the properties
uri
,uriBaseId
,line
, andcolumn
. - Add the property
physicalLocation
of typephysicalLocation
, optional.
NOTE: As a result of #130, this
physicalLocation
will be absorbed into thelocation
property of typelocation
. - Remove the properties
-
Issue #72: "tool.language property needs a default value"
Specify a default value for the following optional property, which subsumes the deleted properties:
tool.language
:"en-US"
-
Issue #66: "Enable traceability from converted SARIF file to original analysis tool log file"
Define the
conversion
object with the following properties:tool
of typetool
, requiredinvocation
of typeinvocation
, optionalanalysisToolLogFileUri
of typestring
, containing a valid URI, optionalanalysisToolLogFileUriBaseId
of typestring
, containing a URI base id, optional
Define the
analysisToolLogFileContents
object with the following properties:region
of typeregion
, optionalsnippet
of typestring
, optionalanalysisToolLogFileUri
of typestring
, containing a valid URI, optionalanalysisToolLogFileUriBaseId
of typestring
, containing a URI base id, optional
NOTE: As a result of #130, this object will disappear.
In the
run
object:- Add the property
conversion
of typeconversion
, optional.
In the
result
object:- Add the property
conversionProvenance
of typeanalysisToolLogFileContents[]
, unique, optional.
NOTE: As a result of #130, the type of this property will change to
physicalLocation[]
. -
Issue #81: "Add 'open' as a result level"
In the
result
object:- Add an additional enumerated value
"open"
to thelevel
property.
- Add an additional enumerated value
-
Issue #82: "Add instance id to result object"
In the
result
object:- Add the property
id
of typestring
, optional
NOTE: As a result of #159, the property name is
instanceGuid
. - Add the property
-
Issue #90: "Introduce fileLocation object"
Define the
fileLocation
object with the following properties:uri
of typestring
, requireduriBaseId
of typestring
, optional
In the
conversion
object:- Remove the properties
analysisToolLogFileUri
andanalysisToolLogFileUriBaseId
. - Add the property
analysisToolLogFileLocation
of typefileLocation
, optional.
In the
file
object:- Remove the properties
uri
anduriBaseId
. - Add the property
fileLocation
of typefileLocation
, optional.
In the
analysisToolLogFileContents
object:- Remove the properties
analysisToolLogFileUri
andanalysisToolLogFileUriBaseId
. - Add the property
analysisToolLogFileLocation
of typefileLocation
, optional.
NOTE: As a result of #130, this is moot. There is no longer an
analysisToolLogFileContents
object.In the
physicalLocation
object:- Remove the properties
uri
anduriBaseId
. - Add the property
fileLocation
of typefileLocation
, optional.
In the
fileChange
object:- Remove the properties
uri
anduriBaseId
. - Add the property
fileLocation
of typefileLocation
, optional.
In the
invocation
object:- Change the type of the
responseFiles
property fromobject
withstring
-valued properties tofileLocation[]
.
NOTE: I originally missed the change to
invocation.responseFiles
. I incorporated that change into the change draft for #76/#97. -
Issue #83: "Consider adding attachments property"
Define the
attachment
object with the following properties:description
of typestring
, optional.fileLocation
of typefileLocation
, required.
In the
invocation
object:- Add the property
attachments
of typeattachment[]
, optional.
In the
result
object:- Add the property
attachments
of typeattachment[]
, optional.
-
Issue #94: "Add an invocation.arguments property"
In the
invocation
object:- Add the property
arguments
of typestring[]
, optional.
- Add the property
-
Issue #91: "Represent original values for uriBaseId properties"
In the
run
object:- Add the property
originalUriBaseIds
, of typeobject
with property values of typestring
.
- Add the property
-
Issue #92: "Add stdin/stdout/stderr on invocation"
In the
invocation
object:- Add the properties
stdin
,stdout
, andstderr
of typestring
, optional.
NOTE: As a result of #133, these are
fileLocation
objects instead ofstring
s. - Add the properties
-
Issue #10: "Do we want an array of fingerprint contributions on result?"
In the
result
object:- Rename the
toolFingerprintContribution
property totoolFingerprintContributions
. - Changed the type of the renamed
toolFingerprintContributions
property fromstring
toobject
with property values of typestring
.
NOTE: As a result of #147,
toolFingerprintContributions
is namedpartialFingerprints
. - Rename the
-
Issue #15: "Document how converters should provide notifications"
In the
conversion
property:- Add the
notifications
property of typenotification[]
2018/03/20: OBSOLETE.
conversion
has aninvocation
property, andinvocation
now hastoolNotifications
andconfigurationNotifications
properties. Filed Issue #132: "conversion.notifications is superfluous" to remove this property. Don't add it to the schema. - Add the
-
Issue #84: "Enable localization for all message strings"
Define a
message
object with the following properties:text
of typestring
, optional.richText
of typestring
, optional.messageId
of typestring
, optional.richMessageId
of typestring
, optional.arguments
of typestring[]
, optional.
Define a
resources
object with the following properties:messageStrings
of typeobject
with property values of typestring
.rules
of typeobject
with property values of typerule
.
Remove the entire
templatedMessage
object.In the
run
object:results
is now required (UNLESS we decide to validate resource files against the same schema as log files).- Remove the
rules
property. - Add the property
resources
of typeresources
.
In the
invocation
object:- The
attachments
property is now a unique array with at least 1 item.
In the
attachment
object:- Change the type of the
description
property fromstring
tomessage
.
In the
result
object:- Change the type of the
message
property fromstring
tomessage
. - Add the property
ruleMessageId
of typestring
. - Remove the
richMessage
property. - Remove the
templatedMessage
property. - The
attachments
property is now a unique array with at least 1 item.
In the
codeFlow
object:- Change the type of the
message
property fromstring
tomessage
. - Remove the
richMessage
property.
In the
stack
object:- Change the type of the
message
property fromstring
tomessage
. - Remove the
richMessage
property.
In the
stackFrame
object:- Change the type of the
message
property fromstring
tomessage
. - Remove the
richMessage
property.
In the
annotatedCodeLocation
object:- Change the type of the
message
property fromstring
tomessage
. - Remove the
richMessage
property.
In the
annotation
object:- Change the type of the
message
property fromstring
tomessage
. - Remove the
richMessage
property.
In the
rule
object:- Change the type of the
name
property fromstring
tomessage
. - Change the type of the
shortDescription
property fromstring
tomessage
. - Change the type of the
fullDescription
property fromstring
tomessage
. - Remove the
richDescription
property. - Rename the
messageTemplates
property tomessageStrings
. - Rename the
richMessageTemplates
property torichMessageStrings
. - Change the type of the
help
property fromstring
tomessage
. - Remove the
richHelp
property.
In the
fix
object:- Change the type of the
description
property fromstring
tomessage
. - Remove the
richDescription
property.
In the
notification
object:- Change the type of the
message
property fromstring
tomessage
.
-
Issue #29: "Introduce object-valued rule.configuration"
Define a
ruleConfiguration
object with the following properties:enabled
of typeboolean
, optional, default =true
.defaultLevel
of typestring
, enumerated valueswarning
,error
,note
, oropen
, defaultwarning
.parameters
, a property bag.
NOTE: #105 removes the default.
In the
rule
object:- Remove the
defaultLevel
property. - Add the property
configuration
of typeruleConfiguration
.
-
Issue #110: "Specify how to treat a file that contains interleaved stdout/stderr"
In the
invocation
object:- Add the property
stdoutStderr
of typestring
.
NOTE: Because of #133, it is now of type
fileLocation
. - Add the property
-
Issue #102: "run.invocation should be an array of invocation objects"
In the
run
object:- Rename the
invocation
property toinvocations
. - Change the type of the renamed
invocations
property to frominvocation
toinvocation[]
NOTE: The name change was not in the change draft. I made an editorial change for that after the fact.
- Rename the
-
Issue #97: "file object's contents property"
Define a
fileContent
object with the following properties:text
of typestring
, optional.binary
of typestring
, optional.
In the
file
object:- Change the type of the
contents
property fromstring
tofileContent
.
In the
result
object:- Change the type of the
snippet
property fromstring
tofileContent
.
In the
analysisToolLogFileContents
object:- Change the type of the
snippet
property fromstring
tofileContent
.
OBSOLETE: Because of #130.
In the
annotatedCodeLocation
object:- Change the type of the
snippet
property fromstring
tofileContent
.
In the
replacement
object:- Remove the
offset
property - Change the name of the
deletedLength
property todeletedRegion
. - Change the type of the renamed
deletedRegion
property frominteger
toregion
. - Change the name of the
insertedBytes
property toinsertedContent
. - Change the type of the renamed
insertedContent
property fromstring
tofileContent
.
-
Issue #115: "invocation object should record process outcome"
In the
invocation
object:- Add the property
exitCode
of typeinteger
. - Add the property
exitCodeDescription
of typestring
. - Add the property
exitSignalName
of typestring
. - Add the property
exitSignalNumber
of typeinteger
. - Add the property
processStartFailureMessage
of typestring
. - Add the property
processExitedSuccessfully
of typeboolean
.
NOTE: The change draft has
processSuccessful
for that last property. The final agreed-upon name istoolExecutionSuccessful
. - Add the property
-
Editorial discretion:
toolNotifications
andconfigurationNotifications
are now oninvocation
instead ofrun
. -
Issue #75: "Ensure spec properly accounts for tools that emit line #'s only for code locations"
In the
run
object:- Remove
"uniqueItems"
from the definition of theresults
property.
- Remove
-
Issue #80: "Code flow enhancements"
Rename the existing
codeFlow
object tothreadFlow
.In the renamed
threadFlow
object:- Add a property
id
of typestring
, optional.
Define a new
codeFlow
object with the following properties:message
of typemessage
, optional.threadFlows
of typethreadFlow[]
, required, unique, non-empty.properties
of typepropertyBag
, optional.
In the
annotatedCodeLocation
object:- Remove the
kind
property. - Remove the
target
property. - Remove the
values
property. - Remove the
taintKind
property. - Remove the
threadId
property. - Add a property
nestingLevel
of typeinteger
, optional. - Add a property
executionOrder
of typeinteger
, optional.
NOTE: Because of #161,
kind
is back, but it means something different. - Add a property
-
Issue #86: "Add path normalization guidance for URLs"
In the
rule
object:- Rename the
helpUri
property tohelpLocation
. - Change the type of the renamed
helpLocation
property fromstring
tofileLocation
.
OBSOLETE: Because of #175.
- Rename the
-
Issue #95: "invocation.fileName -> invocation.executableLocation"
In the
invocation
object:- Rename the
fileName
property toexecutableLocation
. - Change the type of the renamed
executableLocation
property fromstring
tofileLocation
.
- Rename the
-
Issue #96: "Add redactionToken property to run object"
In the
run
object:- Add the property
redactionToken
of typestring
.
- Add the property
-
Issue #133: "Make stdin/stdout/stderr/stdoutStderr fileLocation instead of physicalLocation"
In the
invocation
object:- Change the types of the
stdin
,stdout
,stderr
, andstdoutStderr
properties fromphysicalLocation
tofileLocation
.
- Change the types of the
-
Issue #105: "Remove
default
fromresult.level
property in schema"- Remove the
"default"
value from thelevel
property. - Improve the description of the
level
property.
NOTE: There is no spec change here. The spec language is correct. The change is entirely in the JSON schema.
- Remove the
-
Issue #130: "Fix the location object"
Rename the type
annotatedCodeLocation
tocodeFlowLocation
.NOTE: As of #187, it is
threadFlowLocation
.Remove the
analysisToolLogFileContents
objectIn the
location
object:- Remove the
analysisTarget
property. - Rename the
resultFile
property tophysicalLocation
. - Add a property
message
of typemessage
, optional. - Add a property
annotations
of typeannotation[]
, optional.
NOTE: As of #155,
annotations
is of typeregion[]
.In the
result
object:- Add a property
analysisTarget
of typefileLocation
, optional. - Change the type of property
relatedLocations
fromannotatedCodeLocation[]
tolocation[]
. - Change the type of property
conversionProvenance
fromanalysisToolLogFileContents[]
tophysicalLocation[]
. - Remove the
snippet
property.
In the
threadFlow
object:- Change the type of property
locations
fromannotatedCodeLocation[]
tocodeFlowLocation[]
.
In the
physicalLocation
object:- Add a property
contextRegion
of typeregion
, optional.
In the
region
object:- Add a property
snippet
of typefileContent
, optional.
In the (renamed)
codeFlowLocation
object:- Remove the
physicalLocation
property. - Remove the
fullyQualifiedLogicalName
property. - Remove the
logicalLocationKey
property. - Remove the
message
property. - Remove the
annotations
property. - Remove the
snippet
property. (It is now atcodeFlowLocation.location.physicalLocation.region.snippet
.) - Add a
location
property of typelocation
, required.
NOTE:
location
is no longer required (somecodeFlowLocation
s just carry amessage
).In the
stackFrame
object:- Remove the
physicalLocation
property. - Remove the
fullyQualifiedLogicalName
property. - Remove the
logicalLocationKey
property. - Remove the
message
property. - Add a
location
property of typelocation
.
- Remove the
-
Issue #46: "Provide support for graphs and graph traversals."
Define the
graph
object with the following properties:id
of typestring
, required.description
of typemessage
, optional.nodes
of typenode[]
, required, unique.edges
of typeedge[]
, required, unique.properties
of typepropertyBag
, optional.
Define the
node
object with the following properties:id
of typestring
, required.label
of typemessage
, optional.location
of typelocation
, required.properties
of typepropertyBag
, optional.
Define the
edge
object with the following properties:id
of typestring
, required.label
of typemessage
, optional.sourceNodeId
of typestring
, required.targetNodeId
of typestring
, required.properties
of typepropertyBag
, optional.
Define the
graphTraversal
object with the following properties:graphId
of typestring
, required.description
of typemessage
, optional.initialState
of typeobject
, optional, properties of typestring
.edgeTraversals
of typeedgeTraversal[]
, required.properties
of typepropertyBag
, optional.
Define the
edgeTraversal
object with the following properties:edgeId
of typestring
, required.message
of typemessage
, optional.finalState
of typeobject
, optional, properties of typestring
.properties
of typepropertyBag
, optional.
In the
run
object:- Add a
graphs
property of typegraph[]
, optional.
In the
result
object:- Add a
graphs
property of typegraph[]
, optional. - Add a
graphTraversals
property of typegraphTraversal[]
, optional.
-
Issue #98: "Add encoding property to file object"
In the
run
object:- Add the property
defaultFileEncoding
of typestring
.
In the
file
object:- Add the property
encoding
of typestring
.
- Add the property
-
Issue #107: "Settle on a small set of hash functions"
In the
hash
object:- Change the type of property
algorithm
fromenum
tostring
.
Also: Wherever the word "algorithm" occurs in a comment, change it to "hash function".
- Change the type of property
-
Issue #108: "Represent VCS properties"
Define the
versionControlDetails
object with the following properties:uri
of typestring
, containing a valid URI, required.revisionId
of typestring
, optional.branch
of typestring
, optional.tag
of typestring
, optional.timestamp
of typestring
indate-time
format, optional.properties
of typepropertyBag
, optional.
In the
run
object:- Add a
versionControlProvenance
property of typeversionControlDetails[]
, unique, minItems = 1, optional.
-
Issue #120: "Identify files that were scanned"
In the
file
object:- Add the property
roles
of typestring[]
, with each array element having one of the enumerated values:"analysisTarget"
"attachment"
"responseFile"
"resultFile"
"screenshot"
"standardStream"
"traceFile"
NOTE: As of #137,
"screenshot"
is gone. - Add the property
-
Issue #126: "Add result.fingerprints array"
In the
result
object:- Add a
fingerprints
property of typeobject
withstring
-valued properties.
- Add a
-
Issue #147: "Rename suggestion: toolFingerprintContributions -> partialFingerprints, computedFingerprints -> fingerprints"
In the
result
object:- Rename the
toolFingerprintContributions
property topartialFingerprints
.
NOTE: We added
fingerprints
directly in #126, so there's nothing to do for "computedFingerprints
" (it never existed by that name). - Rename the
-
Issue #134: "conversion.analysisToolLogFileLocation should be an array"
In the
conversion
object:- Rename the
analysisToolLogFileLocation
property toanalysisToolLogFiles
- Change the type of the renamed property
analysisToolLogFiles
fromfileLocation
tofileLocation[]
.
- Rename the
-
Issue #137: "Support annotating image attachments"
Define the
rectangle
object with the following properties:top
of typenumber
left
of typenumber
bottom
of typenumber
right
of typenumber
message
of type `message
In the
region
object:- Add a
message
property of typemessage
.
In the
attachment
object:- Add a
regions
property of typeregion[]
, minItems 1, unique. - Add a
rectangles
property of typerectangle[]
, minItems 1, unique.
In the
file
object:- Remove the enumerated value
"screenshot"
from theroles
property.
-
Issue #139: "Don't require codeFlowLocation.location"
In the
codeFlowLocation
object:- Remove
location
from the list of required properties.
NOTE: In the schema file,
codeFlowLocation.location
was never mentioned as required. This was just as spec change. - Remove
-
Issue #145: "For symmetry, define a logicalLocation object"
In the
location
object:- Remove the
logicalLocationKey
property. - Remove the
decoratedName
property.
In the
logicalLocation
object:- Add a property
fullyQualifiedName
of typestring
. - Add a property
decoratedName
of typestring
.
In the
result
object:- Remove the
ruleKey
property.
In the
notification
object:- Remove the
ruleKey
property.
- Remove the
-
Issue #155: "Remove annotations object; use regions instead"
Remove the
annotation
object.In the
location
object:- Change the type of
annotations
fromannotation[]
toregion[]
.
In the
physicalLocation
object:- Make
fileLocation
required.
- Change the type of
-
Issue #138: "Consider a download/install uri for the tool"
In the
tool
object:- Add a
downloadUri
property of typestring
inuri
format, optional.
- Add a
-
Issue #141: "Consider adding timestamp to file object"
In the
file
object:- Add a
lastModifiedTime
property of typestring
indate-time
format, optional.
- Add a
-
Issue #143: "Add 'returnType', 'parameter' and 'variable' to logical location kind enum"
In the
logicalLocation
object:- Add
"returnType"
,"parameter"
, and"variable"
to the"description"
of thekind
property.
NOTE:
logicalLocation.kind
is not anenum
. The spec recommends certain values, but any value is permitted. So the only change to the schema is this comment change. - Add
-
Issue #157: "Clarify requirements on tool.semanticVersion"
In the
tool
object:semanticVersion
is no longerrequired
.
NOTE: There is no actual change to the schema here, because it had failed to declare
semanticVersion
asrequired
in the first place. -
Issue #159: "Id property renames"
In the
run
object:- Rename the
id
property toinstanceGuid
. - Rename the
stableId
property tologicalId
. - Rename the
baselineId
property tobaselineInstanceGuid
. - Rename the
automationId
property toautomationLogicalId
.
In the
result
object:- Rename the
id
property toinstanceGuid
.
- Rename the
-
Issue #160: "Roles for edited files"
In the
file
object:- Add the following enumerated values to the
roles
property:"unmodifiedFile"
"modifiedFile"
"addedFile"
"deletedFile"
"renamedFile"
"uncontrolledFile"
- Add the following enumerated values to the
-
Issue #161: "Expand code flows to represent dynamic execution events"
In the
codeFlowLocation
object:- Add a
stack
property of typestack
. - Add a
kind
property of typestring
.
- Add a
-
Issue #163: "Add result.workItemLocation"
In the
result
object:- Add a
workItemLocation
property of typefileLocation
.
- Add a
-
Issue #165: "Add run.description"
In the
run
object:- Add a
description
property of typemessage
.
- Add a
-
Issue #176: "fileLocation uri property should be a URI reference"
In the
fileLocation
object:- Change the
uri
property from"format": "uri"
to"format": "uri-reference"
.
- Change the
-
Issue #93: "Problems with regions"
In the
region
object:- Remove the
offset
property. - Remove the
length
property. - Add a
charOffset
property of typeinteger
, optional. - Add a
charLength
property of typeinteger
, optional. - Add a
byteOffset
property of typeinteger
, optional. - Add a
byteLength
property of typeinteger
, optional.
- Remove the
-
Issue #149: "Support nested graphs"
In the
node
object:- Add a
children
property of typenode[]
, optional, unique.
In the
graphTraversal
object"- Remove the
id
property.
In the
edgeTraversal
object:- Remove the
nestedGraphTraversalId
property. - Add a
stepOverEdgeCount
property of typeinteger
, optional.
- Add a
-
Issue #158: "Introduce result.correlationId and clarify purpose of result.fingerprints array"
In the
result
object:- Add a
correlationGuid
property of typestring
, optional.
- Add a
-
Issue #187: "codeFlowLocation => threadFlowLocation"
Rename the
codeFlowLocation
object tothreadFlowLocation
. -
Issue #172: "Dynamic code flows emit timestamps"
In the
threadFlowLocation
object:- Add a
timestamp
property of timestring
indate-time
format, optional.
- Add a
-
Issue #175: "Decide on policy for fileLocation vs. URI"
In the
result
object:- Rename the
workItemLocation
property toworkItemUri
, and change its type fromfileLocation
tostring
withuri
format.
In the
rule
object:- Rename the
helpLocation
property tohelpUri
, and change its type fromfileLocation
tostring
withuri
format.
- Rename the
-
Issue #178: "Support a character or column interpretation property"
In the
run
object:- Add a
columnKind
property of typestring
with enumerated valuesutf16CodeUnits
andunicodeCodePoints
, required.
NOTE: As of #191, this property is optional.
- Add a
-
Issue #189: "Make result.workItemUris an array"
In the
result
object:- Rename the
workItemUri
property toworkItemUris
. - Change its type from
string
tostring[]
, unique, minItems = 1.
- Rename the
-
Issue #191: "run.columnKind is optional"
In the
run
object:- Make the
columnKind
property optional.
- Make the
-
Issue #216: "Remove ruleMessageId and update message lookup semantics."
In the
result
object:- Remove the property
ruleMessageId
.
- Remove the property
-
Issue #220: "Add a correlationGuid property to run"
In the
run
object:- Add a
correlationGuid
property of typestring
, optional.
- Add a
-
Issue #222: "Make invocation.workingDirectory a fileLocation object"
In the
invocation
object:- Change the type of the
workingDirectory
property fromstring
tofileLocation
.
- Change the type of the
-
Issue #174: "Result mgmt. systems merge SARIF files. Can we provide a count of occurrences?"
In the
result
object:- Add an
occurrenceCount
property of typeinteger
, minVal = 1, optional.
- Add an
-
Issue #233: "Consider not requiring rule.id"
In the
rule
object:- Make the
id
property optional.
- Make the
-
Issue #237: "run.graphs and result.graphs should be dictionaries, not arrays."
In the
run
object:- Change the type of the
graphs
property fromgraph[]
toobject
withgraph
-valued properties.
In the
result
object:- Change the type of the
graphs
property fromgraph[]
toobject
withgraph
-valued properties.
- Change the type of the
-
Issue #234: "Consider making originalUriBaseIds a dictionary of file location objects"
In the
run
object:- Change the type of the
originalUriBaseIds
property fromobject
withstring
-valued properties toobject
withfileLocation
-valued properties.
- Change the type of the
-
Issue #235: "Wrap externalized files with contextual information"
Define an
externalFile
object with the following properties:fileLocation
of typefileLocation
, required.instanceGuid
of typestring
, required.
In the
run
object:- Define an
externalFiles
property of typeobject
withexternalFile
-valued properties, optional.
-
Issue #238: "objects without property bags"
Define a
propertyBag
type and DRY out existing property bags to use it.In every object that does not yet have a property bag:
- Add a
properties
property of typepropertyBag
- Add a
-
Issue #240: "Consider removing type inconsistency with message property in exception object"
In the
exception
object:- Change the type of the
message
property fromstring
tomessage
.
- Change the type of the
-
Issue #242: "Rename startTime/endTime to startTimeUtc and endTimeUtc"
In the
invocation
object:- Rename the
startTime
property tostartTimeUtc
- Rename the
endTime
property toendTimeUtc
In the
file
object:- Rename the
lastModifiedTime
property tolastModifiedTimeUtc
In the
versionControlDetails
object:- Rename the
timestamp
property toasOfTimeUtc
In the
threadFlowLocation
object:- Rename the
timestamp
property toexecutionTimeUtc
In the
notification
object:- Rename the
time
property totimeUtc
- Rename the
-
Issue #243: "Consider making file.hashes a dictionary" and Issue #251: "We don't need a hash object"
Remove the
hash
object.In the
files
object:- Change the type of the
hashes
property fromhash[]
toobject
withstring
-valued properties.
- Change the type of the
-
Issue #244: "Rename versionControlDetails.uri to repositoryUri"
In the
versionControlDetails
object:- Rename the
uri
property torepositoryUri
.
- Rename the
-
Issue #217: "Consider adding a discrete 'id' object"
Define the
runAutomationDetails
object with the following properties:description
of typemessage
, optional.instanceId
of typestring
, optional.instanceGuid
of typestring
, optional.correlationGuid
of typestring
, optional.
In the
run
object:- Remove the
instanceGuid
property. - Remove the
correlationGuid
property. - Remove the
logicalId
property. - Remove the
automationLogicalId
property. - Remove the
description
property. - Add an
id
property of typerunAutomationDetails
, optional. - Add an
aggregationIds
property of typerunAutomationDetails[]
, optional.
-
Issue #219: "Delete 'threadFlowLocation.step' property"
In the
threadFlowLocation
object:- Remove the
step
property.
- Remove the
-
Issue #250: "Consider result-level URI for alternate viewer"
In the
result
object:- Add a
hostedViewerUri
property of typestring
inuri
format, optional.
- Add a
-
Issue #169: "Decide how to handle uncommon line break characters"
In the
run
object:- Add a
newlineSequences
property of typestring[]
, optional, minItems: 1, default[ "\r\n", "\n" ]
- Add a
-
Issue #188: "Consider specifying an implied default value when columnKind is missing"
In the
run
object:- Specify
unicodeCodePoints
as the default forcolumnKind
.
- Specify
-
Issue #223: "Remove uniqueItems constraint from result.locations"
In the
result
object:- On the
locations
property, remove theuniqueItems
constraint.
- On the
-
Issue #274: "Rename fileVersion to dottedQuadFileVersion and specify format constraint"
In the
file
object:- Rename the
fileVersion
property todottedQuadFileVersion
.
- Rename the
-
Issue #279: "logicalLocation.kind: remove 'package'"
In the
logicalLocation
object:- Modify the comment on the
kind
property to remove mention of"package"
. (The property is astring
, not anenum
, so only the comment needs to change.)
- Modify the comment on the
-
Issue #280: "Provide optional result.rank value of 0.0 to 100.0"
In the
result
object:- Add a
rank
property of typenumber
,optional
,minValue: 0.0
,maxValue: 100.0
.
In the
ruleConfiguration
object:- Add a
defaultRank
property of typenumber
,optional
,minValue: 0.0
,maxValue: 100.0
.
- Add a
-
Issue #283: "result.message SHALL be present constraint should be added to schema"
In the
result
object:- Add
message
to the list of required properties.
- Add
-
Issue #288: "ruleConfiguration.defaultLevel should not contain an 'open' value"
In the
ruleConfiguration
object:- Remove the value
"open"
from theenum
on thedefaultLevel
property.
- Remove the value
-
Issue #292: "Specify a default for result.rank"
In the
ruleConfiguration
object:- Specify a default of
0.0
fordefaultRank
.
In the
result
object:- Specify a default of
0.0
forrank
.
- Specify a default of
-
Issue #267: "Allow an external file to contain multiple properties"
Rename the
externalFile
object toexternalPropertyFile
.Rename the
externalizedProperty
object toexternalProperties
.In the
run
object:- Rename the
externalFiles
property toexternalPropertyFiles
.
- Rename the
-
Issue #269: "Add optional "itemCount" property to externalPropertyFile"
In the
externalPropertyFile
object:- Add an
itemCount
property of typeinteger
,minValue: 1
, optional.
- Add an
-
Issue #272: "Request: provide 'first seen' timestamp for results"
Define the
resultProvenance
object with the following properties:firstDetectionTimeUtc
of typestring
indate-time
format, optional.lastDetectionTimeUtc
of typestring
indate-time
format, optional.firstDetectionRunInstanceGuid
of typestring
, optional.lastDetectionRunInstanceGuid
of typestring
, optional.
-
Issue #285: "Provide a mechanism to associate a result with an invocation."
In the
resultProvenance
object:- Add an
invocationIndex
property of typeinteger
, optional.
- Add an
-
Issue #297: "Move conversionProvenance under result.provenance"
In the
result
object:- Rename the
resultProvenance
property toprovenance
. - Remove the
conversionProvenance
property.
In the
resultProvenance
object:- Add a
conversionSources
property of typephysicalLocation[]
, optional, unique, default:[]
(logically the same as the oldresult.conversionProvenance
).
- Rename the
-
Issue #248: "Version control details not strongly associated with results"
In the
versionControlDetails
object:- Add a
mappedTo
property of typefileLocation
, optional.
- Add a
-
Issue #293: "Add rule.deprecatedIds"
In the
rule
object:- Add a
deprecatedIds
property of typestring[]
, optional,minItems: 0
,uniqueItems
.
- Add a
-
Issue #270: "Schema needs to be carefully scrubbed for minItems and uniqueItems use for all arrays"
To bring the schema into conformance with this issue, ensure that the attributes of each array-valued property match the table in the issue.
-
Issue #256: "Make Run.Files an array"
In the
run
object:-
Change the type of the
files
property fromobject
withfile
-valued properties tofile[]
. -
Change the type of the
logicalLocations
property fromobject
withlogicalLocation
-valued properties tologicalLocation[]
.
In the
resources
object:- Change the type of the
rules
property fromobject
withrule
-valued properties torule[]
.
In the
fileLocation
object:- Add a
fileIndex
property of typeinteger
, optional.
In the
result
object:- Add a
ruleIndex
property of typeinteger
, optional.
In the
notification
object:- Add a
ruleIndex
property of typeinteger
, optional.
In the
location
object:- Add a
logicalLocationIndex
property of typeinteger
, optional.
In the
file
object:-
Remove the
parentKey
property. -
Add a
parentIndex
property of typeinteger
, optional.
In the
logicalLocation
object:-
Remove the
parentKey
property. -
Add a
parentIndex
property of typeinteger
, optional. -
Make the
name
property required.
In the
rule
object:- Make the
id
property required.
-
-
Issue #303: "Change defaults for result.rank and ruleConfiguration.defaultRank to -1"
In the
result
object:- Change the default value of the
rank
property to-1.0
.
In the
ruleConfiguration
object:- Change the default value of the
defaultRank
property to-1.0
.
- Change the default value of the
-
Issue #304: "run.logicalLocations unique s/be 'true'"
In the
run
object:- On the
logicalLocations
property, add theuniqueItems
constraint.
- On the
-
Issue #312: "Consider adding 'updated' baselineState"
In the
result
object:- In the
baselineState
property:- Rename
"existing"
to"unchanged"
. - Add a new value
"updated"
.
- Rename
- In the
-
Issue #317: "Consider splitting resultLevel into result.level and result.kind."
In the
result
object:-
Add a
kind
property of typestring
with enumerated values"open"
,"review"
,"notApplicable"
,"pass"
, and"fail"
. -
In the
level
property, remove the enumerated values"open"
,"notApplicable"
, and"pass"
.
-
-
Issue #322: "Please add a 'directory' role"
In the
file
object:- Add the enumerated value
"directory"
to theroles
property.
- Add the enumerated value
-
Issue #327: "Remove invocation.attachments"
In the
invocation
object:- Remove the
attachments
property.
- Remove the
-
Issue #341: "Rename all 'instanceGuid' properties to 'guid'"
In the
run
object:- Rename the
baselineInstanceGuid
property tobaselineGuid
. - Rename the
id
property toautomationDetails
.
In the
externalPropertyFile
object (which is renamed toexternalPropertyFileReference
in #335):- Rename the
instanceGuid
property toguid
.
In the
runAutomationDetails
object:- Rename the
instanceId
property toid
. - Rename the
baselineInstanceGuid
property tobaselineGuid
In the
result
object:- Rename the
instanceGuid
property toguid
.
In the
resultProvenance
object:- Rename the
firstDetectionRunInstanceGuid
property tofirstDetectionRunGuid
. - Rename the
lastDetectionRunInstanceGuid
property tolastDetectionRunGuid
.
In the
externalProperties
object:- Rename the
instanceGuid
property toguid
. - Rename the
runInstanceGuid
property torunGuid
.
- Rename the
-
Issue #309: "Rename run.files to run.artifacts, fileLocation to artifactLocation"
Rename the
file
object toartifact
.In the renamed
artifact
object:- Rename the
fileLocation
property toartifactLocation
. - Rename the following values for the
roles
property:unmodifiedFile
→unmodified
.modifiedFile
→modified
.addedFile
→added
.deletedFile
→deleted
.renamedFile
→renamed
.uncontrolledFile
→uncontrolled
.
Rename the
fileLocation
object toartifactLocation
.In the renamed
artifactLocation
object:- Rename the
fileIndex
property toartifactIndex
.
Rename the
fileContent
object toartifactContent
.Rename the
fileChange
object toartifactChange
.In the renamed
artifactChange
object:- Rename the
fileLocation
property toartifactLocation
.
In the
fix
object:- Rename the
fileChanges
property toartifactChanges
.
In the
physicalLocation
object:- Rename the
fileLocation
property toartifactLocation
.
In the
run
object:- Rename the
files
property toartifacts
. - Rename the
defaultFileEncoding
property todefaultEncoding
.
- Rename the
-
Issue #340: "Inline logical location object to location."
In the
location
object:- Remove the
fullyQualifiedLogicalName
property. - Remove the
logicalLocationIndex
property. - Add a property
logicalLocation
of typelogicalLocation
.
- Remove the
-
Issue #202: "Restore threadFlowLocation.kind"
In the
threadFlowLocation
object:- Add a
kind
property of typestring[]
, optional.
- Add a
-
Issue #286: "Specify optional property file.sourceLanguage to guide in syntax-driven colorization of snippets"
In the
region
object:- Add a
sourceLanguage
property of typestring
, optional.
In the
file
object:- Add a
sourceLanguage
property of typestring
, optional.
In the
run
object:- Add a
defaultSourceLanguage
property of typestring
, optional.
- Add a
-
Issue #179: "Consider whether SARIF covers plug-ins/rules versioning sufficiently" and Issue #311: "Provide full metadata objects for notifications"
NOTE: We describe the combined result of both of these changes, because both of them affect the location of rule metadata.
Rename the existing
rule
object toreportingDescriptor
.Rename the existing
ruleConfiguration
object toreportingConfiguration
Define a
toolComponent
object with the following properties:- All previously existing properties of the
tool
object except forlanguage
. globalMessageStrings
of typeobject
with property values of typestring
, moved and renamed fromresources.messageStrings
, optional.ruleDescriptors
of typereportingDescriptor[]
, moved and renamed fromresources.rules
, optional.notificationsDescriptors
of typereportingDescriptor[]
, optional.fileIndex
of typeinteger
,default: -1
, optional.
In the
tool
object:- Remove the
sarifLoggerVersion
property. - Move all remaining properties except for
language
into the newtoolComponent
object. - Add a property
driver
of typetoolComponent
, required. - Add a property
extensions
of typetoolComponent[]
,minItems: 0
, unique, optional.
In the
reportingDescriptor
object (renamed fromrule
):- Rename the
configuration
property todefaultConfiguration
.
In the
reportingConfiguration
object (renamed fromruleConfiguration
):- Rename the
defaultLevel
property tolevel
. - Rename the
defaultRank
property torank
.
Define a
reportingConfigurationOverride
object with the following properties:ruleIndex
of typeinteger
, optional,default: -1
.notificationIndex
of typeinteger
, optional,default: -1
. NOTE: Exactly one ofruleIndex
andnotificationIndex
must be present.extensionIndex
of typeinteger
, optional,default: -1
.configuration
of typereportingConfiguration
, required.
In the
invocation
object:- Add a
reportingConfigurationOverrides
property of typereportingConfigurationOverride[]
, optional.
In the
run
object:- Remove the
resources
property.
Remove the
resources
object.In the
result
object:- Add a property
extensionIndex
of typeinteger
,default: -1
, optional.
In the
notification
object:- Rename the property
ruleId
toassociatedRuleId
. - Rename the property
ruleIndex
toassociatedRuleIndex
. - Add a property
associatedRuleExtensionIndex
of typeinteger
,default: -1
. optional. - Add a property
notificationIndex
of typeinteger
,default: -1
. optional. - Add a property
notificationExtensionIndex
of typeinteger
,default: -1
. optional.
In the
file
object:- Add the enumerated value
"toolComponent"
to theroles
property.
- All previously existing properties of the