• Как статический анализ кода помогает в сфере GameDev
    +2
    Ну, например, аннотации сообщают о том, что возвращаемые значения некоторых методов должны быть использованы, иначе вызовы таких методов не имеют смысла (может, кто-то забыл присвоить или просто лишний вызов).
    Например, есть замечательный метод Vector3.Normalize. В доках, кстати, написано 'Note that this function will change the current vector', хотя статическая версия этого метода (которая вроде как там и описывается) при всём желании не сможет этого сделать. Если пользователь вызвал Vector3.Normalize(vector) и при этом не присвоил результат другой переменной, то вызов не имеет смысла — скорее всего, он думал, что поменяется как раз вектор, переданный в качестве аргумента. Аннотации помогают такие штуки ловить. Без них часто нельзя быть уверенными в том, имеет ли вызов метода смысл, если результат вызова не использован (очевидно, бывают методы, возвращаемые значения которых можно не использовать).
    Конечно, это лишь пример работы аннотаций, они используются не только для таких случаев.
  • Как статический анализ кода помогает в сфере GameDev
    0
    Вы имеете ввиду, поставляются ли какие-то аннотации автоматически или разработчики анализатора пишут их всегда сами (опираясь на доки и тп)?
  • Единороги врываются в RTS: анализируем исходный код OpenRA
    0
    Вот этот момент уже действительно достаточно интересный. Большое спасибо, мы обдумаем возможности доработки анализатора, чтобы он мог такое отлавливать.
  • Единороги врываются в RTS: анализируем исходный код OpenRA
    0
    ClEditInfo cei = _editVarMap[v];
    if (cei == null)
    {
        throw new CassowaryException("SuggestValue for variable " + v + ", but var is not an edit variable\n");
    }
    


    По этому фрагменту не соглашусь. В словарь вполне можно записать null. Например,
    _editVarMap[v] = null;
    
  • Единороги врываются в RTS: анализируем исходный код OpenRA
    +2
    Действительно, есть такая проблема. Дело в том, что у анализатор тут предполагает, что теоретически значение centerY_ может поменяться при вызове solver.AddConstraint. Однако человеческий глаз, конечно, легко видит тут странный момент, да. Мы подумаем над тем, как нам улучшить работу анализатора в подобных местах, спасибо за отзыв :)
  • Как найти ошибки в C# проекте, работая под Linux и macOS
    0
    К сожалению, на данный момент плагина для VS Code нет. Аналогично и с VS for mac.
  • Как найти ошибки в C# проекте, работая под Linux и macOS
    0
    Я не писал, что Rider — это единственный вариант. Или я не совсем понял вопрос?