coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Abhishek Anand <aa755 AT pm.me>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] ensuring .v files have no query commands
- Date: Mon, 21 Feb 2022 14:47:13 +0000
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=aa755 AT pm.me; spf=Pass smtp.mailfrom=aa755 AT pm.me; spf=Pass smtp.helo=postmaster AT mail-4322.protonmail.ch
- Ironport-data: A9a23:NlX7f63KwGxkcu+f1fbD5Rh3kn2cJEfYwER7XKvMYLTBsI5bp2ACn TMcD2vTbP2PZWP9cohxaYS+ph9Q7JPVn4QxTgVu3Hw8FHgiRejtVY3IdB+oV8+xBpSeFxw/t 512hv3odp1coqr0/0/1WlTZhSAgk/nOH9IQMcacUsxLbVYMpBwJ1FQzy4bVvqYy2YLjW1nX4 IuoyyHiEAbNNwBcYjp8B52r80sHUMTa4Fv0aXRjDRzjlAa2e0g9VPrzF4npR5fLatU88tqBe gr25OrRElU1UPsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0o2HKJ0VKtZt9mGt49W7 pITipa1c1sKEP3ytNkXbUNmTy4raMWq+JefSZS+mcmazkmDLyC2mbN2FkYqOosd8+dzR2pOn RAaAGldM1bc36Tqm/ThEIGAhex7RCXvFIoW5Sw95SncS/MrKXzGa/+QuYAGjG9r7ixINfHiS PYfThNTUETBW0RLH00rS7U1sfj90xETdBUD9ALP/PZni4TJ9yR616GoO97IcPSRVMBNlwCZo HjH9iL3GHkn2Me3zDOE9jfw3bWV2zvhX54VErix9/osi137KnEv5AM+Cnyd5qeGgEuEB/Fxe 3I4xyAQ95Zu+xn+JjXiZCGQrHmBtx8aftNfFewm9Q2AopY4BS7EVwDoqRYcObQbWN8KqS8Ci gDQw4+4bdB7mO3MFC/FnluBhWrqYUAowXk+iTgsZitt3jUOiIQ6jxaKEo05SuitlNrpHjf1y jGO6iM+71nysSLp//rglbwkq2j2znQscuLTzlmINo5Cxl8pDLNJn6TytTDmAQ9ode51tGWps nkegNS55+sTF5yLnyHlaLxTQOzyt6/VaGaM3wYH83wdG9KFpi/LkWd4vWAWGauVGp9slcLBO hSL5Wu9GrcKZCPCgVBLj3KZUJh6l/G8RbwJp9jMdN1SZZ45fQDvwc2dTRD44owZq2B1yftXE c7DL66EVC9GYYw6kmbeb7pDgNcDm3FmrUuOFMuT50n2gdK2OiXPIZ9bawTmUwzMxPjZyOkj2 40DbJTiJtQ2eLGWXxQ7BqZJcwhRdCBjXcqeRg4+XrfrHzeK0VoJU5f5qY7NsaQ890iMvuuXr Hy7RGFCz1/z2S/OJQmQNyJ7bfXqUM8n/348OCUtO3eu2mQiONzzvPtDLsVtJbR3pvZ+yfNUT uUef5nSCPp4TDmaqS8WaoPwrdA/eRny3VCOMiOpbSIRZZllQwCVqNbochGypjELSC+67JNsr 7ql3wLdYJwCWwU7VpqGNK72kQnpsCFEyuxoXkbOLt1CQ2nW8dBne37rk/s6A8AQMhGflDGU4 ACbXEUDru7Xro5prdTEiPnf/YekGudzBHBXB23K8bGyOXWI92av29ISSOPOeD2EDDH4/6CrZ ON0yfDgMaRdwAYW79MiSe5mnfAk+t/ih75G1QA4Tn/FWFKmV+F7KX6c0MgT66BAy+MLuQayX U7TqNBWNa/TY5HgGV8VYVZ+NL7FzesThj7U6P00JAPx5HYvrraAVExTOTiKiTBcdeAqb9x+n bt54MNGuRaijhcKM8qdinwG/Wq7KHFdAb4ssYsXAdO2hwd3mEtOZ4fQVn3/7J2VMY4eN0ArJ nrI3/CYwaxGwVbFdX86FHyL1uoE3cYCvxVDzVkjIVWVm4Oe2aBoh0ENqWw6HlZP0xFK8+NvI Ww3ZUd7EqODomVzj89ZUmHwRgxMCXV1IKAqJ4flSYEYc6WpaoAJBGg0OOLIoBtDqSREZD9H+ 7edwWfhFz3qFC009jVnQlZr8pQPUvQonjAuWuj+dyhGI3X+SSLgxKqjDYbNgwWyGts/3SUru sEzlNudqsTH2eo4u6h9DoTyOXH8jvybDDQqfMyNN5/l0Y0RlP9eFNROx42MlhtxGsH3
- Ironport-hdrordr: A9a23:wdoVXKMkwKsY3cBcTsCjsMiBIKoaSvp037BL7TEVdfUxSKalfq +V98jzuSWZtN9VYhEdcLO7Scu9qBHnlKKdiLN5VYtKHjOW21dASrsM0WKI+VPd8kPFm9K1zZ 0QFJSWFueAaWRHsQ==
- Ironport-phdr: A9a23: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
- Ironport-sdr: hdJhsE6zrg6PdwloF6bCAO2OCWy+VJfl6EjbOVPlSRpiP403ZKMN9vjHaWk7D91QfY7/RJ2yTL VHW2RjD/pgibsipF4OTV6A3x3XlQdr3YpGESnKOYPJ8GJ5W8nZtLRkKKZ0YYw0OGf3/UKmguVy 15+vjRu/WHphCaYfU5HkXtYaVQBYBZoM3cUm7CrSPfF+t/AVs3hV5jnGLUBOL7N4n3oO1Nq2Kn VCWCjN7fRhAgOEDRSq7WYuccuV9JZlYBa/wOxpkH3pLQA58LjvxWsHW6hNjxs0wLFhVIdBmruG Hj5zF5MRK4dr2P/Wm58zQZYe
That rg query doesnt seems to match anything, perhaps there is some minor syntactic issue. Based on my understanding of what it is intended to do, I do have some corner cases like a file containing "Binary Search tree" in comments, so it is not something I would enforce in CI. but it is good enough to manually find the possible leftovers. To further ease the process, I wrote an emacs function to create a hyperlinked list of all (leftover) queries:
One can use the following elist to bind C-c M-u automate the following: go to the project root (nearest dir ancestor containing _CoqProject) of the currently open .v file and look for query commands in .v files in all (sub)dirs starting from there:
(defun check-coq-query ()
(defun check-coq-query ()
(interactive)
(let* ((proot (locate-dominating-file (buffer-file-name) "_CoqProject")))
(grep (concat "egrep -e '(^Search\s|[^A-Za-z0-9]Search\s|^Locate\s|[^A-Za-z0-9]Locate\s|^About\s|[^A-Za-z0-9]About\s)' --include=\"*.v\" -rn " proot))))(eval-after-load 'company-coq
'(define-key company-coq-map (kbd "C-c M-u") 'check-coq-query))
--
Abhishek Anand
------- Original Message -------
On Friday, February 18th, 2022 at 4:18 PM, Tej Chajed <tchajed AT mit.edu> wrote:
On Friday, February 18th, 2022 at 4:18 PM, Tej Chajed <tchajed AT mit.edu> wrote:
This kind of problem is hard in general because you need to process comments and strings at a minimum. However if you’re just trying to catch stray commands that trusted developers make, I would think
rg -g '*.v' '^\s*(Search|Locate|Print)\b'
would be a pretty good solution. I'd be curious where this kind of regex fails for your use case Abhishek.Adding the feature to Coq itself has the downside that the check is coupled with compilation, which is much slower than a simpler syntactic check.
On Thu, Feb 17, 2022 at 10:52 PM Abhishek Anand <aa755 AT pm.me> wrote:
for just checking compliance, would it be easier to have a hook in coqtop/coqc that errors on query commands?--Abhishek Anand------- Original Message -------
On Thursday, February 17th, 2022 at 10:09 PM, Timothy Carstens <intoverflow AT gmail.com> wrote:
This would be (another) good feature for a Coq formatter/linterI have slowly been working on such a thing but it is not yet in a “production ready” stateJust for fun, the repo is here:https://github.com/appliedfm/vstyle-toolsSent from my iPhoneOn Feb 17, 2022, at 4:39 PM, Abhishek Anand <aa755 AT pm.me> wrote:Has someone written some automated check to ensure .v files dont have leftover query commands like Locate/Print/Search?If not, what would be an easy way to do it?Naively, I thought I could write a regexp search with grep, but with unicode in identifiers and the rich syntax of Search, I'm not sure how to do it.--Abhishek Anand
- [Coq-Club] ensuring .v files have no query commands, Abhishek Anand, 02/18/2022
- Re: [Coq-Club] ensuring .v files have no query commands, Timothy Carstens, 02/18/2022
- Re: [Coq-Club] ensuring .v files have no query commands, Abhishek Anand, 02/18/2022
- Re: [Coq-Club] ensuring .v files have no query commands, Tej Chajed, 02/18/2022
- Re: [Coq-Club] ensuring .v files have no query commands, Vedran Čačić, 02/19/2022
- Re: [Coq-Club] ensuring .v files have no query commands, Ralf Jung, 02/21/2022
- Re: [Coq-Club] ensuring .v files have no query commands, Freek Wiedijk, 02/21/2022
- Re: [Coq-Club] ensuring .v files have no query commands, Ana Borges, 02/21/2022
- Re: [Coq-Club] ensuring .v files have no query commands, Ana Borges, 02/21/2022
- Re: [Coq-Club] ensuring .v files have no query commands, Freek Wiedijk, 02/21/2022
- Re: [Coq-Club] ensuring .v files have no query commands, Ralf Jung, 02/21/2022
- Re: [Coq-Club] ensuring .v files have no query commands, Pierre Courtieu, 02/21/2022
- Re: [Coq-Club] ensuring .v files have no query commands, Vedran Čačić, 02/19/2022
- Re: [Coq-Club] ensuring .v files have no query commands, Abhishek Anand, 02/21/2022
- Re: [Coq-Club] ensuring .v files have no query commands, Tej Chajed, 02/18/2022
- Re: [Coq-Club] ensuring .v files have no query commands, Abhishek Anand, 02/18/2022
- Re: [Coq-Club] ensuring .v files have no query commands, Timothy Carstens, 02/18/2022
Archive powered by MHonArc 2.6.19+.