#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-файлы). Теперь анализ выполняется успешно.