cpplint неправильно ведет себя в докере - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь запустить cpplint.py внутри контейнера Docker.

Вот Dockerfile, который я использую для создания изображения: последний:

FROM ubuntu:18.04

# update and install dependencies
RUN apt-get update \
    && apt-get -y -qq install software-properties-common \
    && apt-get -y -qq install python3.7 \
    && ln -s /usr/bin/python3 /usr/bin/python

# install our linter
COPY cpplint.py /usr/sbin
RUN chmod +x /usr/sbin/cpplint.py

# install a test file
COPY Types.h .

Я запускаю контейнеркак это:

$ docker run -it --rm lint:latest bash
root@17a20248ee33:/# cpplint.py Types.h
root@17a20248ee33:/# echo $?
1

Что показывает cpplint.py, возвращающий код ошибки.

Обратите внимание, что при запуске cpplint.py --help экран справки отображается как обычно. Это долго, поэтому я не буду перечислять это здесь.

Выполнение одной и той же команды вне контейнера работает нормально:

$ ./cpplint.py Types.h
Types.h:0:  No #ifndef header guard found, suggested CPP variable is: _LINT_TYPES_H_  [build/header_guard] [5]
Done processing Types.h
Total errors found: 1

Согласно Справочник по запуску Docker STDOUT и STDERR по умолчанию подключены к терминалу. Я понимаю, что cpplint пишет ошибки в STDERR, но не думаю, что поэтому я не вижу того же вывода при запуске в контейнере. Я попробовал маневр 2>&1, чтобы заставить STDERR на STDOUT, и получил те же результаты.

Есть идеи, почему я не вижу вывод из cpplint.py, когда запускаю его в контейнере?

1 Ответ

1 голос
/ 08 ноября 2019

В контейнере попробуйте установить cpplint.py, используя pip3

FROM ubuntu:18.04

# update and install dependencies
RUN apt-get update \
    && apt-get -y -qq install software-properties-common \
    && apt-get -y -qq install python3.7 python3-pip \
    && pip3 install cpplint

# install a test file
COPY Types.h .
...