Exemple #1
0
        async void _btnAnalysis_OnClick(object sender, RoutedEventArgs args)
        {
            if (!DataIsLoaded)
            {
                return;
            }

            await BlockInputAction(() => {
                try {
                    _analysisDone = false;
                    _oldXmlDocDict.Clear();

                    Log("---------------- Анализ входных данных:\n{0}\n{1}\n{2}\n----------------", _resourcesFile, _csvDocFile, _solutionFile);

                    var allFound = true;
                    foreach (var kv in _newXmlDocDict)
                    {
                        var symbolId  = kv.Key;
                        var newXmlDoc = kv.Value;

                        if (!newXmlDoc.CheckResources(_resourcesDict))
                        {
                            continue;
                        }

                        var oldXmlDoc = _solution.GetXmlDocForSymbol(symbolId);

                        if (oldXmlDoc == null)
                        {
                            allFound = false;
                            continue;
                        }

                        if (!CodeXmlDoc.IsDocStructureTheSame(oldXmlDoc, newXmlDoc))
                        {
                            Log("ERROR: Структура документации в существующем коде и во входном файле не совпадают для символа {0}", symbolId);
                            continue;
                        }

                        _oldXmlDocDict[symbolId] = oldXmlDoc;
                    }

                    Log("------------------------------------------------------------------------");

                    _analysisDone = _newXmlDocDict.Count > 0 && _oldXmlDocDict.Count > 0;

                    Log("Анализ завершен. " + (_analysisDone ? "Можно выполнять замену в коде." : "Нет ни одного символа для замены документации."));

                    var skipSymbols = _newXmlDocDict.Keys.Except(_oldXmlDocDict.Keys).ToArray();
                    if (skipSymbols.Length > 0)
                    {
                        Log("Следующие символы проигнорированы:\n{0}", string.Join("\n", skipSymbols));
                    }
                } catch (Exception e) {
                    ErrorMsg("Ошибка во время анализа: " + e);
                }

                return(Task.FromResult(0));
            });
        }