Skip to content
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

Cleanup options #28

Closed
11 tasks done
vogler opened this issue Dec 22, 2015 · 3 comments
Closed
11 tasks done

Cleanup options #28

vogler opened this issue Dec 22, 2015 · 3 comments
Labels
cleanup Refactoring, clean-up
Milestone

Comments

@vogler
Copy link
Collaborator

vogler commented Dec 22, 2015

There are 32 'experimental' options. Maybe those could be better classified or cleaned up.
The number of experimental options should be kept at a minimum.
Todo:

  • Introduce additional categories:
    • witness
    • solver
    • context
    • incremental
    • output
  • Sort experimental options into the categories
  • Rename defaults.ml to options.ml
  • Finalize options, so that they cannot be mutated after the solver started
  • ana.warnings is used
  • warnstyle only refers to race warnings

Related #192

@vogler vogler added the cleanup Refactoring, clean-up label Dec 22, 2015
@vogler vogler added this to the Goblint 1.0 milestone Dec 22, 2015
@jerhard jerhard changed the title finalize experimental options Cleanup experimental options May 7, 2021
@jerhard jerhard changed the title Cleanup experimental options Cleanup options May 7, 2021
@jerhard jerhard removed this from the Goblint 1.0 milestone May 7, 2021
@michael-schwarz
Copy link
Member

@sim642: What is the state of dbg.test.domain? Right now it fails right away with

domain testing analysis...: PathSensitive2(MCP2 context hashconsed) lifted hashconsed
About to crash! (:-1)
Fatal error: exception Failure("HConsed lifted PathSensitive (Set ([expRelation:(Unit), mallocWrapper:(lifted proglines), base:(value domain * array partitioning deps * P), threadid:(Thread), threadflag:(MT mode), escape:(top or Set (variables)), mutex:(Reversed (top or Set (Normal Lvals * booleans)))])): no arbitrary")

Do we want this option to do domain testing when running on a single program? If yes we should aim to fix it?
Or is this superfluous since we introduced the make domaintest target?

@sim642
Copy link
Member

sim642 commented May 12, 2021

dbg.test.domain is separate from domaintest. The latter is testing the single small "leaf" domains that are explicitly listed for direct testing. The former is for testing Spec.D itself, which cannot be reasonably assembled in the separate domaintest executable without all the options and valid CIL values around (because some domains actually use them, but writing an Arbitrary instance for varinfo etc is problematic, if I remember correctly).

Since I never implemented arbitrary for every single domain in Goblint, dbg.test.domain has never tested the complete extent of the domains. Although when it initially was added, it at least didn't crash but just used trivial arbitrary implementations for some things.

So I'd keep it because it should allow testing the actual domain of the analysis, which depends on all the options, not just a handful we can test separately, for example all the domain functors. I'll have to see what the failing piece is right now.

@michael-schwarz
Copy link
Member

Closed in favor of #653.

sim642 added a commit to sim642/opam-repository that referenced this issue Aug 18, 2022
CHANGES:

Goblint "lean" release after a lot of cleanup.

* Remove unmaintained analyses: OSEK, ARINC, shapes, containment, deadlocksByRaces (goblint/analyzer#460, goblint/analyzer#736, goblint/analyzer#812, goblint/analyzer#474).
* Add interactive analysis (goblint/analyzer#391).
* Add server mode (goblint/analyzer#522).
* Add Compilation Database support (goblint/analyzer#406, goblint/analyzer#448).
* Add floating point domain, unrolled array domain and improved struct domains (goblint/analyzer#734, goblint/analyzer#761, goblint/analyzer#577, goblint/analyzer#419).
* Add static loop unrolling and heap variable unrolling (goblint/analyzer#563, goblint/analyzer#722).
* Improve race detection with may-happen-in-parallel analysis (goblint/analyzer#529, goblint/analyzer#518, goblint/analyzer#595).
* Reimplement lockset and deadlock analyses (goblint/analyzer#659, goblint/analyzer#662, goblint/analyzer#650, goblint/analyzer#655).
* Add pthread extraction to Promela (goblint/analyzer#220).
* Add location spans to output (goblint/analyzer#428, goblint/analyzer#449).
* Improve race reporting (goblint/analyzer#550, goblint/analyzer#551).
* Improve dead code reporting (goblint/analyzer#94, goblint/analyzer#353, goblint/analyzer#785).
* Refactor warnings (goblint/analyzer#55, goblint/analyzer#783).
* Add JSON schema for configuration (goblint/analyzer#476, goblint/analyzer#499).
* Refactor option names (goblint/analyzer#28, goblint/analyzer#192, goblint/analyzer#516, goblint/analyzer#675).
* Add bash completion (goblint/analyzer#669).
* Add OCaml 4.13 and 4.14 support, remove OCaml 4.09 support (goblint/analyzer#503, goblint/analyzer#672).
sim642 added a commit to sim642/opam-repository that referenced this issue Aug 18, 2022
CHANGES:

Goblint "lean" release after a lot of cleanup.

* Remove unmaintained analyses: OSEK, ARINC, shapes, containment, deadlocksByRaces (goblint/analyzer#460, goblint/analyzer#736, goblint/analyzer#812, goblint/analyzer#474).
* Add interactive analysis (goblint/analyzer#391).
* Add server mode (goblint/analyzer#522).
* Add Compilation Database support (goblint/analyzer#406, goblint/analyzer#448).
* Add floating point domain, unrolled array domain and improved struct domains (goblint/analyzer#734, goblint/analyzer#761, goblint/analyzer#577, goblint/analyzer#419).
* Add static loop unrolling and heap variable unrolling (goblint/analyzer#563, goblint/analyzer#722).
* Improve race detection with may-happen-in-parallel analysis (goblint/analyzer#529, goblint/analyzer#518, goblint/analyzer#595).
* Reimplement lockset and deadlock analyses (goblint/analyzer#659, goblint/analyzer#662, goblint/analyzer#650, goblint/analyzer#655).
* Add pthread extraction to Promela (goblint/analyzer#220).
* Add location spans to output (goblint/analyzer#428, goblint/analyzer#449).
* Improve race reporting (goblint/analyzer#550, goblint/analyzer#551).
* Improve dead code reporting (goblint/analyzer#94, goblint/analyzer#353, goblint/analyzer#785).
* Refactor warnings (goblint/analyzer#55, goblint/analyzer#783).
* Add JSON schema for configuration (goblint/analyzer#476, goblint/analyzer#499).
* Refactor option names (goblint/analyzer#28, goblint/analyzer#192, goblint/analyzer#516, goblint/analyzer#675).
* Add bash completion (goblint/analyzer#669).
* Add OCaml 4.13 and 4.14 support, remove OCaml 4.09 support (goblint/analyzer#503, goblint/analyzer#672).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cleanup Refactoring, clean-up
Projects
None yet
Development

No branches or pull requests

4 participants