-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New input type for semgrep-core allows taking scanning roots instead of target files #337
base: main
Are you sure you want to change the base?
Conversation
Backwards compatibility summary:
|
always_select_explicit_targets : bool; | ||
(* This is a hash table in Find_targets.conf: *) | ||
explicit_targets : string list; | ||
(* osemgrep-only: option (see Git_project.ml and the force_root parameter) *) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if those are osemgrep-only, then we could remove those options from here if pysemgrep
will never generate them?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Which would remove the need to have to define project_root above.
24d4b87
to
bd2cf34
Compare
BTW would be great after all this work to merge the semgrep-interfaces repo in semgrep-pro :) Those double PRs |
This is annoying:
It's a legitimate incompatibility report but it's about the semgrep-core interface that we can break at will. It wouldn't happen if we could split the ATD file into multiple modules each concerned with a different interface. Maybe for now we could have some kind of hack to work around this. Atddiff offers an option to only check certain types so we could use this but it's not great for the long term (since adding a new interface would require adding the new root types to the list of types to check). By increasing difficulty (and cleanliness), we have:
|
Yes I've asked a few times for the ability to white list a few roots to not bother to check anything that descend from RPC or semgrep-core stuff. |
whitelist or blacklist. In this case we probably want atddiff --do-not-bother-about-those-roots 'function_call,function_return,core_output' Note that core_output also deeply use cli_output_extra, but this cli_output_extra is also used by cli_output so we should |
I added an option to atddiff to ensure that we don't miss future type definitions. atd PR coming soon. |
We'll need to add an option to make this safer. See TODO.
c0bf503
to
391c610
Compare
This is used by https://github.com/semgrep/semgrep-proprietary/pull/2878.
make setup && make
to update the generated code after editing a.atd
file (TODO: have a CI check)For example, the Semgrep backend need to still be able to consume data
generated by Semgrep 1.50.0.
See https://atd.readthedocs.io/en/latest/atdgen-tutorial.html#smooth-protocol-upgrades
Note that the types related to the semgrep-core JSON output or the
semgrep-core RPC do not need to be backward compatible!