Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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
Add support for is_valid_before #825
base: main
Are you sure you want to change the base?
Add support for is_valid_before #825
Changes from all commits
c48889c
b3b36e1
0d2ce9e
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
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.
🧹 Nitpick (assertive)
Add inline comment explaining the intersection check.
Add a brief comment explaining why we're checking if the intersection is not bottom.
bool Invariants::is_valid_after(const label_t& label, const string_invariant& state) const { const ebpf_domain_t abstract_state = ebpf_domain_t::from_constraints(state.value(), thread_local_options.setup_constraints); + // Return false only if abstract_state violates post-invariant constraints return !(abstract_state & invariants.at(label).post).is_bottom(); }
📝 Committable suggestion
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.
🧹 Nitpick (assertive)
Add inline comment explaining the intersection check.
Add a brief comment explaining why we're checking if the intersection is not bottom.
bool Invariants::is_valid_before(const label_t& label, const string_invariant& state) const { const ebpf_domain_t abstract_state = ebpf_domain_t::from_constraints(state.value(), thread_local_options.setup_constraints); + // Return false only if abstract_state violates pre-invariant constraints return !(abstract_state & invariants.at(label).pre).is_bottom(); }
📝 Committable suggestion
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.
💡 Codebase verification
Add unit tests for is_valid_before and is_valid_after methods
🔗 Analysis chain
Verify test coverage for both methods.
Both is_valid_before and is_valid_after need test coverage to ensure they handle all four cases described in the comments.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
Length of output: 531
Script:
Length of output: 954
Script:
Length of output: 1642
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.
🧹 Nitpick (assertive)
Add documentation for is_valid_before method.
Document the method's purpose, parameters, return value, and relationship to is_valid_after. This is essential given the complex validation logic explained in the implementation file.
📝 Committable suggestion