Как найти подобный фрагмент кода?

Я как-то сделал обходной путь, чтобы исправить это. На самом деле SnapShot.Children (от Firebase Unity SDK) имеет IEnumerable. Тип. Я искал в интернете итерации IEnumerable коллекций. И затем заменил мой код из этого:

else if (task.IsCompleted) {
        DataSnapshot snapshot = task.Result;
        // Do something with snapshot...
                    foreach(DataSnapshot s in snapshot.Children){
                    IDictionary dictUsers = (IDictionary)s.Value;   
                    Debug.Log(dictUsers["displayName"]);                    
                }   
                // After this foreach loop in snapshot.Children, nothing executes
                UIManager.instance.ShowOtherUsers();
        }

На это:

else if (task.IsCompleted)
        {
            DataSnapshot snapshot = task.Result;
                // Do something with snapshot...

            using (var sequenceEnum = snapshot.Children.GetEnumerator())
            {
             for(int i = 0 ;i

Это работало как Очарование ... Что я понимаю, что это выполнение было сделано с резьбой Задача». Хотя я не знаю точно, как это работает или почему это не работает с моим предыдущим кодом. Кто-то, кто может предоставить лучшую информацию, приветствуется :) Ура!

19
задан Community 23 May 2017 в 12:09
поделиться

2 ответа

Можно использовать Человекообразную обезьяну. Это - инструмент, который обнаруживает дублирующий код в Java, C#, C++, XML и намного больше (даже плоскость txt файлы). Это даже интегрируется приятно в инструменте как CruiseControl.

10
ответ дан 30 November 2019 в 05:13
поделиться

Наш CloneDR находит повторяющийся код, как точные копии, так и почти не совпадающие, в больших исходных системах, параметризованных с помощью языкового синтаксиса. Он поддерживает Java, C #, COBOL, C ++, PHP, Python и многие другие языки.

Он принимает ряд параметров для определения «Что такое клон?», Включая: а) Порог схожести, определяющий, насколько схожие два блока кода должны быть объявленными клонами (обычно 95% хорошо) б) количество строк минимального размера клона (3, как правило, хороший выбор) c) количество параметров (явные изменения в тексте; 5, как правило, хороший выбор) С этими настройками он имеет тенденцию находить 10-15% избыточного кода в виртуальном все, что он обрабатывает.

Линейно-ориентированные инструменты обнаружения клонов, такие как Simian, не могут найти клонированный код, который был переформатирован, но CloneDR будет. Они могут сказать, что два блока кода совпадают, но они обычно не показывают вам точно, как они совпадают или где различия; CloneDR будет. Они не предлагают, как абстрагироваться от клонированного кода; CloneDR будет.

Благодаря более слабому соответствию алгоритмы, они имеют тенденцию давать больше ложных срабатываний; когда вы получите сообщение о 5000 клонах в миллионе строк количество ложных срабатываний имеет большое значение.

Основываясь на вашем примере, я бы ожидал, что он найдет эти два фрагмента (вы не должны указывать ни на один из них) и обратите внимание, что они аналогичны, если абстрагироваться от имен переменных.

3
ответ дан 30 November 2019 в 05:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: