2019-06-29 04:27:53 -04:00
|
|
|
|
Writing issue reports
|
|
|
|
|
=====================
|
|
|
|
|
|
|
|
|
|
### Bugs and features only
|
2013-04-03 21:50:01 -04:00
|
|
|
|
|
|
|
|
|
First things first: **the issue tracker is NOT for tech support**. It is for
|
|
|
|
|
reporting bugs and requesting features. If your issue amounts to "I can't get
|
|
|
|
|
YCM to work on my machine" and the reason why is obviously related to your
|
|
|
|
|
machine configuration and the problem would not be resolved with _reasonable_
|
|
|
|
|
changes to the YCM codebase, then the issue is likely to be closed.
|
|
|
|
|
|
2019-06-29 04:27:53 -04:00
|
|
|
|
### Where to go for help
|
|
|
|
|
|
2016-10-31 12:48:35 -04:00
|
|
|
|
**A good place to ask questions is the [Gitter room][gitter] or the
|
|
|
|
|
[ycm-users][] Google group**. Rule of thumb: if you're not sure whether your
|
2019-06-29 04:27:53 -04:00
|
|
|
|
problem is a real bug, ask on the room or the group.
|
|
|
|
|
|
|
|
|
|
Don't go to `#vim` on freenode for support. See the [readme][] for further help.
|
|
|
|
|
|
|
|
|
|
### Installation problem - read the docs
|
2013-07-13 14:38:34 -04:00
|
|
|
|
|
2013-07-01 13:55:56 -04:00
|
|
|
|
**YCM compiles just fine**; [the build bots say so][build-bots]. If the bots are
|
2013-05-29 21:58:17 -04:00
|
|
|
|
green and YCM doesn't compile on your machine, then _your machine is the root
|
2013-07-13 14:42:40 -04:00
|
|
|
|
cause_. Now read the first paragraph again.
|
2013-05-29 21:58:17 -04:00
|
|
|
|
|
2013-04-03 21:50:01 -04:00
|
|
|
|
Realize that quite literally _thousands_ of people have gotten YCM to work
|
|
|
|
|
successfully so if you can't, it's probably because you have a peculiar
|
|
|
|
|
system/Vim configuration or you didn't go through the docs carefully enough.
|
|
|
|
|
It's very unlikely to be caused by an actual bug in YCM because someone would
|
|
|
|
|
have already found it and reported it.
|
|
|
|
|
|
|
|
|
|
This leads us to point #2: **make sure you have checked the docs before
|
|
|
|
|
reporting an issue**. The docs are extensive and cover a ton of things; there's
|
|
|
|
|
also an FAQ at the bottom that quite possibly addresses your problem.
|
|
|
|
|
|
2019-06-29 04:27:53 -04:00
|
|
|
|
For installation problems, make sure that any issue report includes the entire
|
|
|
|
|
output of any build or installation commands, including **the command used to
|
|
|
|
|
run them**.
|
|
|
|
|
|
|
|
|
|
### Other problems - check the issue tracker
|
|
|
|
|
|
2013-04-03 21:50:01 -04:00
|
|
|
|
Further, **search the issue tracker for similar issues** before creating a new
|
|
|
|
|
one. There's no point in duplication; if an existing issue addresses your
|
2019-06-29 04:27:53 -04:00
|
|
|
|
problem, please comment there instead of creating a duplicate. However, if the
|
|
|
|
|
issue you found is **closed as resolved** (e.g. with a PR or the original user's
|
|
|
|
|
problem was resolved), raise a **new issue**, because you've found a new
|
|
|
|
|
problem. Reference the original issue if you think that's useful information.
|
|
|
|
|
|
|
|
|
|
If you do find a similar open issue, **don't just post 'me too' or similar**
|
|
|
|
|
responses. This almost never helps resolve the issue, and just causes noise for
|
|
|
|
|
the maintainers. Only post if it will aid the maintainers in solving the issue;
|
|
|
|
|
if there are existing diagnostics requested in the thread, perform
|
|
|
|
|
them and post the results.
|
|
|
|
|
|
|
|
|
|
When replying, follow the instructions for getting the required diagnostics for
|
|
|
|
|
posting a new issue (see below), and add them to your response. This is likely
|
|
|
|
|
to help the maintainers find a fix for you, rather than have them spend time
|
|
|
|
|
requesting them again. To be clear, the maintainers *always* need the
|
|
|
|
|
diagnostics (debug info, log files, versions, etc.) even for responses on
|
|
|
|
|
existing issues.
|
2013-04-03 21:50:01 -04:00
|
|
|
|
|
2013-07-13 14:38:34 -04:00
|
|
|
|
You should also **search the archives of the [ycm-users][] mailing list**.
|
|
|
|
|
|
2019-06-29 04:27:53 -04:00
|
|
|
|
### Check your YCM version
|
|
|
|
|
|
2013-04-03 21:50:01 -04:00
|
|
|
|
Lastly, **make sure you are running the latest version of YCM**. The issue you
|
2013-05-29 22:12:20 -04:00
|
|
|
|
have encountered may have already been fixed. **Don't forget to recompile
|
2015-08-22 02:23:58 -04:00
|
|
|
|
ycm_core.so too** (usually by just running `install.py` again).
|
2013-04-03 21:50:01 -04:00
|
|
|
|
|
2019-06-29 04:27:53 -04:00
|
|
|
|
## Creating an issue
|
|
|
|
|
|
2013-04-03 21:50:01 -04:00
|
|
|
|
OK, so we've reached this far. You need to create an issue. First realize that
|
2013-04-06 12:56:51 -04:00
|
|
|
|
the time it takes to fix your issue is a multiple of how long it takes the
|
|
|
|
|
developer to reproduce it. The easier it is to reproduce, the quicker it'll be
|
|
|
|
|
fixed.
|
2013-04-03 21:50:01 -04:00
|
|
|
|
|
|
|
|
|
Here are the things you should do when creating an issue:
|
|
|
|
|
|
2019-06-29 04:27:53 -04:00
|
|
|
|
1. Most importantly, **read and complete the issue template**. The maintainers
|
|
|
|
|
rely on the style and structure of the issue template to quickly resolve your
|
|
|
|
|
issue. If you don't complete it in full, then the maintainers may elect to
|
|
|
|
|
ignore or simply close your issue. This isn't personal, it's just that they
|
|
|
|
|
are busy too.
|
2013-05-29 22:12:20 -04:00
|
|
|
|
1. **Write a step-by-step procedure that when performed repeatedly reproduces
|
|
|
|
|
your issue.** If we can't reproduce the issue, then we can't fix it. It's
|
|
|
|
|
that simple.
|
2019-06-29 04:27:53 -04:00
|
|
|
|
2. Explain **what you expected to happen**, and **what actually happened**.
|
|
|
|
|
This helps us understand if it is a bug, or just a misunderstanding of the
|
|
|
|
|
behavior.
|
|
|
|
|
2. Add the output of [the `:YcmDebugInfo` command][ycm-debug-info-command]. Make
|
|
|
|
|
sure that when you run this, your cursor is in the file that is experiencing
|
|
|
|
|
the issue.
|
2016-05-06 01:52:04 -04:00
|
|
|
|
3. Put the following options in your vimrc:
|
2013-10-24 17:37:07 -04:00
|
|
|
|
```viml
|
2016-05-06 01:52:04 -04:00
|
|
|
|
let g:ycm_keep_logfiles = 1
|
|
|
|
|
let g:ycm_log_level = 'debug'
|
2013-10-24 15:31:38 -04:00
|
|
|
|
```
|
2013-11-17 13:40:49 -05:00
|
|
|
|
|
2016-05-06 01:52:04 -04:00
|
|
|
|
Reproduce your issue and attach the contents of the logfiles. Use [the
|
|
|
|
|
`:YcmToggleLogs` command][ycm-toggle-logs-command] to directly open them in
|
|
|
|
|
Vim.
|
2015-11-07 05:50:44 -05:00
|
|
|
|
4. **Create a test case for your issue**. This is critical. Don't talk about how
|
2013-04-03 21:50:01 -04:00
|
|
|
|
"when I have X in my file" or similar, _create a file with X in it_ and put
|
|
|
|
|
the contents inside code blocks in your issue description. Try to make this
|
|
|
|
|
test file _as small as possible_. Don't just paste a huge, 500 line source
|
|
|
|
|
file you were editing and present that as a test. _Minimize_ the file so that
|
|
|
|
|
the problem is reproduced with the smallest possible amount of test data.
|
2015-11-07 05:50:44 -05:00
|
|
|
|
5. **Include your OS and OS version.**
|
|
|
|
|
6. **Include the output of `vim --version`.**
|
2013-04-03 21:50:01 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Creating good pull requests
|
|
|
|
|
===========================
|
|
|
|
|
|
|
|
|
|
1. **Follow the code style of the existing codebase.**
|
|
|
|
|
- The Python code **DOES NOT** follow PEP 8. This is not an oversight, this
|
|
|
|
|
is by choice. You can dislike this as much as you want, but you still need
|
|
|
|
|
to follow the existing style. Look at other Python files to see what the
|
|
|
|
|
style is.
|
|
|
|
|
- The C++ code has an automated formatter (`style_format.sh` that runs
|
|
|
|
|
`astyle`) but it's not perfect. Again, look at the other C++ files and
|
|
|
|
|
match the code style you see.
|
|
|
|
|
- Same thing for VimScript. Match the style of the existing code.
|
|
|
|
|
|
2013-11-17 13:42:51 -05:00
|
|
|
|
2. **Your code needs to be well written and easy to maintain**. This is of the
|
|
|
|
|
_utmost_ importance. Other people will have to maintain your code so don't
|
|
|
|
|
just throw stuff against the wall until things kinda work.
|
|
|
|
|
|
2014-03-19 18:51:44 -04:00
|
|
|
|
3. **Split your pull request into several smaller ones if possible.** This
|
|
|
|
|
makes it easier to review your changes, which means they will be merged
|
|
|
|
|
faster.
|
|
|
|
|
|
|
|
|
|
4. **Write tests for your code**. If you're changing the VimScript code then
|
2013-11-17 13:42:51 -05:00
|
|
|
|
you don't have to since it's hard to test that code. This is also why you
|
|
|
|
|
should strive to implement your change in Python if at all possible (and if
|
|
|
|
|
it makes sense to do so). Python is also _much_ faster than VimScript.
|
|
|
|
|
|
2014-03-19 18:51:44 -04:00
|
|
|
|
5. **Explain in detail why your pull request makes sense.** Ask yourself, would
|
2013-04-03 21:50:01 -04:00
|
|
|
|
this feature be helpful to others? Not just a few people, but a lot of YCM’s
|
|
|
|
|
users? See, good features are useful to many. If your feature is only useful
|
|
|
|
|
to you and _maybe_ a couple of others, then that’s not a good feature.
|
|
|
|
|
There is such a thing as “feature overload”. When software accumulates so
|
|
|
|
|
many features of which most are only useful to a handful, then that software
|
|
|
|
|
has become “bloated”. We don’t want that.
|
|
|
|
|
|
|
|
|
|
Requests for features that are obscure or are helpful to but a few, or are
|
|
|
|
|
not part of YCM's "vision" will be rejected. Yes, even if you provide a
|
|
|
|
|
patch that completely implements it.
|
|
|
|
|
|
|
|
|
|
Please include details on exactly what you would like to see, and why. The
|
|
|
|
|
why is important - it's not always clear why a feature is really useful. And
|
|
|
|
|
sometimes what you want can be done in a different way if the reason for the
|
2013-08-30 23:52:41 -04:00
|
|
|
|
change is known. _What goal is your change trying to accomplish?_
|
2013-05-29 21:58:17 -04:00
|
|
|
|
|
2014-01-13 14:08:43 -05:00
|
|
|
|
|
2019-06-29 04:27:53 -04:00
|
|
|
|
[build-bots]: https://dev.azure.com/YouCompleteMe/YCM/_build/latest?definitionId=1&branchName=master
|
2013-07-13 14:38:34 -04:00
|
|
|
|
[ycm-users]: https://groups.google.com/forum/?hl=en#!forum/ycm-users
|
2016-10-31 12:48:35 -04:00
|
|
|
|
[gitter]: https://gitter.im/Valloric/YouCompleteMe
|
2019-06-29 04:27:53 -04:00
|
|
|
|
[readme]: https://github.com/ycm-core/YouCompleteMe
|
|
|
|
|
[ycm-debug-info-command]: https://github.com/ycm-core/YouCompleteMe#the-ycmdebuginfo-command
|
|
|
|
|
[ycm-toggle-logs-command]: https://github.com/ycm-core/YouCompleteMe#the-ycmtogglelogs-command
|