Skip to content

KeyError: 'ruleId' when converting SARIF file to CodeClimate #112

@wiktor-k

Description

@wiktor-k

Hi!

I just found your tool and want to use it to covert a SARIF file produced by typos to CodeClimate (for Gitlab).

The sarif file produced by typos --format sarif > /tmp/sarif.json is as follows:

{
  "$schema": "https://schemastore.azurewebsites.net/schemas/json/sarif-2.1.0.json",
  "runs": [
    {
      "columnKind": "unicodeCodePoints",
      "results": [
        {
          "fixes": [
            {
              "artifactChanges": [
                {
                  "artifactLocation": {
                    "uri": "./packet/src/framing.rs"
                  },
                  "replacements": [
                    {
                      "deletedRegion": {
                        "endColumn": 30,
                        "endLine": 268,
                        "startColumn": 23,
                        "startLine": 268
                      },
                      "insertedContent": {
                        "text": "writer"
                      }
                    },
                    {
                      "deletedRegion": {
                        "endColumn": 30,
                        "endLine": 268,
                        "startColumn": 23,
                        "startLine": 268
                      },
                      "insertedContent": {
                        "text": "written"
                      }
                    }
                  ]
                }
              ],
              "description": {
                "markdown": "`writter` should be `writer`, `written`"
              }
            }
          ],
          "level": "error",
          "locations": [
            {
              "physicalLocation": {
                "artifactLocation": {
                  "uri": "./packet/src/framing.rs"
                },
                "region": {
                  "endColumn": 30,
                  "endLine": 268,
                  "startColumn": 23,
                  "startLine": 268
                }
              }
            }
          ],
          "message": {
            "markdown": "`writter` should be `writer`, `written`"
          }
        }
      ],
      "tool": {
        "driver": {
          "informationUri": "https://github.com/crate-ci/typos",
          "name": "typos"
        }
      }
    }
  ],
  "version": "2.1.0"
}

With the following command: pipx run sarif-tools codeclimate /tmp/sarif.json --output /tmp/x.json I get the following error:

NOTE: running app 'sarif' from 'sarif-tools'
Traceback (most recent call last):
  File "/home/wiktor/.cache/pipx/5c5a72a6ae11f66/bin/sarif", line 7, in <module>
    sys.exit(main())
             ~~~~^^
  File "/home/wiktor/.cache/pipx/5c5a72a6ae11f66/lib/python3.14/site-packages/sarif/cmdline/main.py", line 61, in main
    exitcode = args.func(args)
  File "/home/wiktor/.cache/pipx/5c5a72a6ae11f66/lib/python3.14/site-packages/sarif/cmdline/main.py", line 317, in _codeclimate_command
    _init_path_prefix_stripping(input_files, args, strip_by_default=False)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/wiktor/.cache/pipx/5c5a72a6ae11f66/lib/python3.14/site-packages/sarif/cmdline/main.py", line 254, in _init_path_prefix_stripping
    input_files.init_path_prefix_stripping(autotrim, trim_paths)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
  File "/home/wiktor/.cache/pipx/5c5a72a6ae11f66/lib/python3.14/site-packages/sarif/sarif_file.py", line 593, in init_path_prefix_stripping
    input_file.init_path_prefix_stripping(autotrim, path_prefixes)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/wiktor/.cache/pipx/5c5a72a6ae11f66/lib/python3.14/site-packages/sarif/sarif_file.py", line 392, in init_path_prefix_stripping
    run.init_path_prefix_stripping(autotrim, path_prefixes)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/wiktor/.cache/pipx/5c5a72a6ae11f66/lib/python3.14/site-packages/sarif/sarif_file.py", line 129, in init_path_prefix_stripping
    records = self.get_records()
  File "/home/wiktor/.cache/pipx/5c5a72a6ae11f66/lib/python3.14/site-packages/sarif/sarif_file.py", line 226, in get_records
    self.result_to_record(result, include_blame_info) for result in results
    ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/wiktor/.cache/pipx/5c5a72a6ae11f66/lib/python3.14/site-packages/sarif/sarif_file.py", line 245, in result_to_record
    error_id = result["ruleId"]
               ~~~~~~^^^^^^^^^^
KeyError: 'ruleId'

I'm not exactly sure if that's the input file that's broken or if that's an issue with the sarif tools.

pipx run sarif-tools version prints 3.0.5

Thank you for your help! 👋

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions