-
Notifications
You must be signed in to change notification settings - Fork 338
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
Generate better bug reports for users #4924
Comments
Just as a thought, but specifically for this usecase I've been developing a snapshot/replay functionality in Langoustine tracer. The idea is that a user can "restart with tracing" and capture the problematic usecase, and then download a snapshot in viewable JSON format. @ckipp01 already played with this idea in nvim-metals: scalameta/nvim-metals#514 This won't capture Metals' internal state, of course, but it can go quite far. Tracer itself can even be embedded into Metals. |
@keynmol that could be cool, though I think here we should tackle the cases where users might not be able to reproduce the issue or we might want to add some specific internal data. For langoustine, could it read the plain trace files that we have in Metals? We already trace whenever |
if Current message format is similar to this:
But it's only this way because that's how it's dumped from case classes - I can certainly amend it to be a lot denser. With regards to extra information - client can just send a special |
|
We can call it LSPTP :D Language Server Protocol Trace Protocol. More protocols! |
Could you buffer the last N LSP/BSP messages in memory and when touching the file (or at user request), dump them to disk? |
Not sure but seems like a good feature to add to scribe: outr/scribe#394 |
I think this is an excellent idea! I would suggest that in addition to log files (and perhaps tracing), the following data could be collected that would prove useful in diagnosing certain classes of problems:
I believe that making it easy to submit diagnostic information will increase the number of reports. But I also have a slight concern about security: in gathering logs, at minimum, path information will be captured, including the names of files that occur in commercial code bases; and including a personal identifier (home path) for the user generating the report. It could be useful to do scrubbing on all logs and traces to remove such PII to avoid leaking information that could compromise an individual submitter or a company employing such an individual. |
@smarter mentioned the existence of https://github.com/lampepfl/lsp-viewer — when he was developing the old Dotty LSP Server, EPFL students experiencing trouble could enable logging which he'd analyze in the viewer. (without anonymization since it was students doing assignments and it was opt-in) |
Reporting has been added, there will be also an opt in report gathering in the near future. |
Inspired by #4902 I think we try to identify more places where we could save a snapshot of the workspace for the users to be able to file better issues.
We should:
.metals/reports
Opinions?
@kpodsiad was thinking of an additional red status bar icon for VS Code, which maybe could also invoke the command?
The text was updated successfully, but these errors were encountered: