повторный анализ кода с помощью инструмента командной строки (inspectcode.exe)

#c# #resharper

#c# #resharper

Вопрос:

На моем языке C # файл sln содержит два проекта. в первом проекте содержится фактический код, а во втором проекте — наименьшее количество примеров для первого проекта. но пока я выполняю анализ кода resharper с помощью инструмента командной строки (inspectcode.exe ).

для обоих проектов resharper выполняет проверку только в проекте модульного тестирования, а не в файле фактического кода.

 package org.sonar.plugins.resharper;
import java.io.File;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sonar.api.utils.command.Command;
import org.sonar.api.utils.command.CommandException;
import org.sonar.api.utils.command.CommandExecutor;

public class ReSharperExecutor
{
  private static final Logger LOG = LoggerFactory.getLogger(ReSharperExecutor.class);

  public void execute(String executable, String project, String solutionFile, File rulesetFile, File reportFile, int timeout)
  {
    Command cmd = Command.create(getExecutable(executable)).addArgument("/output="   reportFile.getAbsolutePath()).addArgument("/no-swea").addArgument("/project="   project).addArgument("/profile="   rulesetFile.getAbsolutePath()).addArgument("/no-buildin-settings").addArgument(solutionFile);

    int exitCode = CommandExecutor.create().execute(cmd, TimeUnit.MINUTES.toMillis(timeout));
    if (exitCode != 0) {
      throw new CommandException(cmd, "ReSharper execution failed with exit code: "   exitCode, null);
    }
  }

  private static String getExecutable(String propertyValue)
  {
    String execName = "inspectcode.exe";
    if (!propertyValue.endsWith(execName)) {
      return new File(propertyValue, execName).getAbsolutePath();
    }
    return propertyValue;
  }
}' 
  

Где мне нужно внести изменения, чтобы выполнить анализ Resharper для фактического кода.

Выполнение команды: cd:/inspectcode.exe /output=cd:resharper-report.xml /no-swea /project=* /profile=cd:.sonarresharper-sonarqube.DotSettings /no-buildin-settings cd:XXXX.sln

Комментарии:

1. Обычно вы просто вызываете inspectcode в файле решения. Что это за cd: параметры?

2. @Matthias Спасибо за ваш ответ. Здесь cd означает соответствующий каталог папок с этими файлами (или расположение папки с файлами).

3. Можете ли вы сначала устранить все другие возможные ошибки, вызвав inspectcode.exe непосредственно в папке с решением?

4. @Matthias Спасибо за ваш любезный ответ. Я попытался и вызвал inspectcode.exe и передал решение непосредственно в качестве входных данных для inspectcode, но оно всегда ищет самые простые проекты и выдает отчет об анализе для этого файла unittet, и если в этом решении отсутствуют самые простые файлы, выдается ошибка, так как файлы для проверки не были найдены. Выполнение команды: cd:/inspectcode.exe /output=cd:resharper-report.xml /no-swea /project=* «cd:/Project.sln»

Ответ №1:

Вышеуказанная проблема была вызвана тем, что версия сборки VS отличается в

1. машина, построенная по проекту (VS2015) amp;

2. машина для анализа проекта (VS2013),

таким образом, в журнале машины не отображаются какие-либо сведения об ошибках 2.

После тестирования анализа на встроенной машине я получил основную причину проблемы (было упущено несколько библиотек зависимостей проекта, которые должны быть доступны в папке MSBuild {Msbuildfolder-> Microsoft-> visualstudio->version}) и исправил это (заменив отсутствующие DLL-файлы). Теперь анализ выполняется успешно.