Skip to content

Dump generic AST to HTML#484

Merged
maciejpirog merged 1 commit intomainfrom
mpir/dump-ast-html
Dec 15, 2025
Merged

Dump generic AST to HTML#484
maciejpirog merged 1 commit intomainfrom
mpir/dump-ast-html

Conversation

@maciejpirog
Copy link
Contributor

To make debugging easier, this PR adds a flag --html to the opengrep show command in order to produce an HTML page with a tree representing the generic AST. E.g.

$ cat ../test/test.py
x = y + 1
$ opengrep show dump-ast ../test/test.py --html > ../test/test.html
image

Features

  • Each node can be expanded or collapsed, so one can focus on a particular part of the AST,

  • Nodes are color-coded: statements are red, expressions are green, identifiers are yellow,

  • id_info is always collapsed by default (it is quite bloated and usually do not contain any interesting info)

  • If possible, DefStmts get a name and type next to the main node, so that one does not have to expand DefStmt -> entity -> name -> EN -> Id -> identifier to know what is being defined by the particular node, which should make identifying parts of the AST quicker, e.g.:

cat ../test/test.py
def foo(x):
  return x + y

def bar():
  return 2
image

Copy link
Contributor

@corneliuhoffman corneliuhoffman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like this a lot. I wonder wether this bloody Meta_AST.vof_any can be reverted. thatwould prob solve all our transf issues no, the v type is so much more simple

@maciejpirog maciejpirog merged commit b25b89b into main Dec 15, 2025
8 of 9 checks passed
@maciejpirog maciejpirog deleted the mpir/dump-ast-html branch December 15, 2025 13:13
@dimitris-m dimitris-m mentioned this pull request Dec 15, 2025
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Dec 18, 2025
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [opengrep/opengrep](https://github.com/opengrep/opengrep) | minor | `v1.12.1` -> `v1.13.2` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>opengrep/opengrep (opengrep/opengrep)</summary>

### [`v1.13.2`](https://github.com/opengrep/opengrep/releases/tag/v1.13.2): Opengrep 1.13.2

[Compare Source](opengrep/opengrep@v1.13.1...v1.13.2)

#### Improvements

- C#: Add matching on function argument modifiers (ref, in, scoped, etc.) by [@&#8203;maciejpirog](https://github.com/maciejpirog) in [#&#8203;494](opengrep/opengrep#494)
- C#: Support extension blocks by [@&#8203;maciejpirog](https://github.com/maciejpirog) in [#&#8203;496](opengrep/opengrep#496)

#### Release process

- Validate tag input on release by [@&#8203;lae](https://github.com/lae) in [#&#8203;493](opengrep/opengrep#493)

**Full Changelog**: <opengrep/opengrep@v1.13.1...v1.13.2>

### [`v1.13.1`](https://github.com/opengrep/opengrep/releases/tag/v1.13.1): Opengrep 1.13.1

[Compare Source](opengrep/opengrep@v1.12.1...v1.13.1)

#### Improvements

- Improve handling of patterns and `AST_to_IL` translation by [@&#8203;dimitris-m](https://github.com/dimitris-m) in [#&#8203;483](opengrep/opengrep#483)
- Improve rust tainting by [@&#8203;dimitris-m](https://github.com/dimitris-m) in [#&#8203;485](opengrep/opengrep#485)
- Dump generic AST to HTML by [@&#8203;maciejpirog](https://github.com/maciejpirog) in [#&#8203;484](opengrep/opengrep#484)
- Modernise C# by [@&#8203;maciejpirog](https://github.com/maciejpirog) in [#&#8203;487](opengrep/opengrep#487)

#### Bug fixes

- Fix for kotlin double-annotation bug by [@&#8203;maciejpirog](https://github.com/maciejpirog) in [#&#8203;480](opengrep/opengrep#480)
- Fix PCRE2 test making OSX build fail by [@&#8203;dimitris-m](https://github.com/dimitris-m) in [#&#8203;486](opengrep/opengrep#486)
- Fix: in `LetPattern(pat, e)`, `e` should be visited first by [@&#8203;dimitris-m](https://github.com/dimitris-m) in [#&#8203;488](opengrep/opengrep#488)

#### CI fixes

- Force python 3.13 for osx binary workflow by [@&#8203;dimitris-m](https://github.com/dimitris-m) in [#&#8203;490](opengrep/opengrep#490)

##### Notes

- Version 1.13.0 ([#&#8203;489](opengrep/opengrep#489)) intentionally skipped due to CI errors, fixed in [#&#8203;490](opengrep/opengrep#490).

**Full Changelog**: <opengrep/opengrep@v1.12.1...v1.13.1>

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi41Ny4xIiwidXBkYXRlZEluVmVyIjoiNDIuNTcuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90Il19-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants