Какой непрерывный инструмент интеграции является лучшим для проекта C++? [закрытый]

В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.

При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.

Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».

Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this. Возьмем этот пример:

public class Some {
    private int id;
    public int getId(){
        return this.id;
    }
    public setId( int newId ) {
        this.id = newId;
    }
}

И в другом месте вашего кода:

Some reference = new Some();    // Point to a new object of type Some()
Some otherReference = null;     // Initiallly this points to NULL

reference.setId( 1 );           // Execute setId method, now private var id is 1

System.out.println( reference.getId() ); // Prints 1 to the console

otherReference = reference      // Now they both point to the only object.

reference = null;               // "reference" now point to null.

// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );

// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...

Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference и otherReference оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.

19
задан Pascal Thivent 2 February 2010 в 17:42
поделиться

6 ответов

Мы использовали CruiseControl для CI на проекте C++. В то время как это - единственная вещь, мы используем муравья для, сценарий сборки муравья для CruiseControl только запускает наш нормальный сценарий сборки, таким образом, это очень просто, и мы не должны были действительно обновлять его в долго. Поэтому то, что CrusieControl является базирующимся Java, действительно не было проблемой вообще для нас.

основные преимущества использования чего-то как круиз-контроль

  • А хорошая веб-страница, показывающая состояние сборки
  • электронная почта после каждой сборки или после отказавших сборок
  • Автоматически сборка после фиксации к системе управления исходным кодом
  • плагин Firefox А для контроля состояния сборки
  • Шоу вывод для любых ошибок сборки.
  • Шоу, что файлы изменили начиная с последней сборки (хороший для наблюдения, какой разработчик повредил buid)

, Конечно, можно ли записать сценарий сами, который делает все это, но почему делают всю ту работу? В конечном счете дополнительная начальная стоимость установки CruiseControl (или что-то подобное), вероятно, намного меньше, чем стоимость поддержания и обновления пользовательского сценария сборки CI.

, Если все Вам нужно, должен запустить ежедневную сборку, и простой сценарий, запущенный кроном, достаточен для Ваших потребностей, затем любой ценой делают это. Однако одно из преимуществ CI - то, что Вы получаете отчет о состоянии сборки после каждой регистрации. Запись сценария, чтобы сделать, который берет больше работы и CruiseControl уже, делает это.

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

Мы используем Hudson для CI и SonarQube для метрик кода. Они интегрированы, и у Хадсона есть несколько плагинов, которые ни один cronjob не может превзойти.

Одним из замечательных плагинов является CI Game, которая ведет учет того, кто нарушает сборки и кто совершает их, не нарушая их. У Hudson есть плагины для работы с VMWare, Selenium, SVN, CSV, Git. Он имеет RSS-синдикацию, которая может помочь вам еще больше автоматизировать все остальное.

Хадсон великолепен ...

11
ответ дан 30 November 2019 в 03:43
поделиться

Мы использовали Панель инструментов Dart . Это - открытый исходный код, но управляемый KitWare. Они с тех пор изменили имя на CDash, который я предполагаю, все еще как способный. Мы делаем несколько видов тестирования включая ночную и непрерывную интеграцию через 10 различных платформ и в отладке и выпускаем режим, а также рабочие 1000-е тестов приложения и создания отчетов о результатах там также.

4
ответ дан 30 November 2019 в 03:43
поделиться

Я использовал Buildbot для Spring механизм РТС проект успешно.

4
ответ дан 30 November 2019 в 03:43
поделиться

Можно также попробовать TeamCity JetBrains. Это - коммерческий продукт, но это дает бесплатную лицензию максимум на 20 конфигураций сборки.

2
ответ дан 30 November 2019 в 03:43
поделиться

Вы должны пойти с подрывной, или, может быть, git или mercurial.

Это явно не стоит того, чтобы вы покупали что-либо, я думаю, вы можете удалить коммерческие решения из вашего списка сразу.

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

-121--3227039-

Я думаю, что это поможет понять, о чем на самом деле идет речь. Эта ссылка показывает, как идеально разумно закодированное приложение на самом деле имеет много комната для оптимизации - а именно коэффициент 43! Ничто из этого не имеет отношения к итерации или рекурсии.

Если приложение настроено так далеко , оно попадает в точку, где циклы, сохраненные итерацией в сравнении с рекурсией, могут на самом деле иметь значение.

-121--942464-

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

Если это не нужно, вам, вероятно, лучше использовать планировщик задач Windows или задания cron.

Кроме того, инструменты CI также поставляются с веб-панелью и расширенными возможностями ведения журнала.

Ваш вопрос кажется мне более «зачем мне использовать инструмент CI», а затем «какой инструмент CI я должен использовать». Если пакетный сценарий отвечает вашим потребностям, используйте его. (Повторное) создание среды сборки упрощается только в том случае, если в качестве дополнительного компонента не требуется инструмент CI. Если вы хотите, чтобы система управления версиями запускала построение, панель мониторинга, место хранения старых результатов построения или другое ведение журнала, используйте средство CI и избегайте разработки всех таких функций в пакетных сценариях или сценариях оболочки.

1
ответ дан 30 November 2019 в 03:43
поделиться
Другие вопросы по тегам:

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