Сборка Coverity в Linux env (проект cmake) не удалась

Я работаю над реализацией статического анализатора кода для нашей базы кода Linux env, и я не сталкиваюсь с проблемой NO FILES EMITTED.

Вот шаги, которые я выполнил:

У меня версия Linux Coverity 2023.9.2. Мы используем cmake для сборки наших проектов, используя «Ninja» в качестве системы сборки. Я настроил Coverity с различными шаблонами в файле «myConfig.xml», чтобы не пропустить ни одного компилятора. Мой проект находится на C++ и C#.

Below is the command how I configure our cmake project before cov-build capture.

*az73@lin*:**/usr/bin/cmake -G "Ninja" -DCMAKE_BUILD_TYPE:STRING = "Debug" -DCMAKE_INSTALL_PREFIX:PATH = "/mnt/d/microservices/InteropServices/src/Services/Modules/HxGN.PPM.Interop.Readers/out/install/WSL-GCC-Debug" -DCMAKE_TOOLCHAIN_FILE = "/mnt/d/microservices/repos/vcpkg/scripts/buildsystems/vcpkg.cmake" /mnt/d/microservices/InteropServices/src/Services/Modules/HxGN.PPM.Interop.Readers/CMakeLists.txt**

Это команда cov-build, которую я даю при создании настроенного проекта cmake. (Вы можете видеть, что сборка идет без каких-либо проблем)

*az73@lin*:**/mnt/d/microservices/InteropServices/src/Services/Modules/HxGN.PPM.Interop.Readers/build/WSL-GCC-Debug$ cov-build --dir cov-int --config /mnt/d/linux-coverity/cov-analysis-linux64-2023.9.2/bin/myConfig.xml /usr/bin/cmake --build /mnt/d/microservices/InteropServices/src/Services/Modules/HxGN.PPM.Interop.Readers/build/WSL-GCC-Debug --clean-first --config Debug**

Coverity Build Capture (64-bit) version 2023.9.2 on Linux 5.15.153.1-microsoft-standard-WSL2 x86_64
Internal version numbers: 395a026bc9 p-2023.9-push-64


[1/1] Cleaning all built files...
Cleaning... 199 files.
[58/202] Linking CXX shared library OutputHelper/ClipperTableAccessor/libClipperTableAccessor.so
MSBuild version 17.7.6+77d58ec69 for .NET
  Determining projects to restore...
  All projects are up-to-date for restore.
  Logging -> /mnt/d/microservices/InteropServices/src/Services/Modules/HxGN.PPM.Interop.Logging/bin/Debug/net6.0/Logging.dll
  Utilities -> /mnt/d/microservices/InteropServices/src/Services/Utilities/bin/Debug/net6.0/Utilities.dll
  ClipperTableAccessor -> /mnt/d/microservices/InteropServices/src/Services/Modules/HxGN.PPM.Interop.Readers/build/WSL-GCC-Debug/OutputHelper/ClipperTableAccessor/net6.0/ClipperTableAccessor.dll

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:42.74
[94/202] Building CXX object Readers/NavisworksReader/NavisworksFileReader/CMakeFiles/NavisworksFileReader.dir/NavisworksFileReader.cpp.o

И ошибка, с которой я столкнулся, заключается в следующем:

**[WARNING] No files were emitted. This may be due to a problem with your configuration
or because no files were actually compiled by your build command.
Please make sure you have configured the compilers actually used in the compilation.**

Когда я попытался получить образец файла cpp, в котором есть две проблемы, я увидел, что Coverity может его захватить:

*az73@lin*:**/mnt/c/Users/ashaik2/Desktop$ cov-build --dir cov-int-samp --config /mnt/d/linux-coverity/cov-analysis-linux64-2023.9.2/bin/myConfig.xml g++ sample.cpp -o sample**

Coverity Build Capture (64-bit) version 2023.9.2 on Linux 5.15.153.1-microsoft-standard-WSL2 x86_64
Internal version numbers: 395a026bc9 p-2023.9-push-64


Emitted 1 C/C++ compilation units (100%) successfully

1 C/C++ compilation units (100%) are ready for analysis

Я не уверен, почему Coverity не может отправлять какие-либо файлы, когда я пытаюсь на уровне проекта. Я хотел бы знать, не упускаю ли я что-нибудь.

Я предполагаю, что ваша цепочка инструментов vcpkg отменяет настройку компилятора, установленную Coverity.

Alan Birtles 22.08.2024 12:12

что написал Алан, и если это так, вы можете проверить compile_commands.json, чтобы увидеть, как компилятор запускается для каждого файла? Я думаю, там должен быть указан cov-build вместо mscc или того, что использует vcpkg. И вы настраиваете его в каталоге чистой сборки? Чтобы исключить любые проблемы с кэшем cmake, вы можете добавить --fresh к шагу настройки cmake при подготовке рецептов сборки ниндзя.

Ped7g 22.08.2024 12:33
cov-build создает файл build-log.txt в промежуточном каталоге. Вы бы добавили этот файл или репрезентативный отрывок? В частности, вверху должна быть конфигурация компилятора и строки EXECUTING, соответствующие вызовам компилятора во время сборки.
Scott McPeak 22.08.2024 16:00

Возможно, вы также захотите запустить настройку cmake под cov-build?

Alan Birtles 22.08.2024 16:08

@ Ped7g Ped7g Я даже пробовал настроить в каталоге чистой сборки, а также пробовал с помощью --fresh opt, но бесполезно. переходя к compile_commands.json, вот как выглядит пример команды: "command": "/usr/bin/cc -I/mnt/d/microservices/repos/vcpkg/buildtrees/libzip/src/a00‌​9075b9a-41a56dd033.c‌​lean/lib -I/mnt/d/microservices/repos/vcpkg/buildtrees/libzip/x64-lin‌​ux-dbg -isy. Я настроил компилятор cc и попробовал, но все равно бесполезно. @ScottMcPeak, да, в промежуточном каталоге есть build-log.txt, но я не считаю его полезным.

az73 22.08.2024 20:05

Я прошу вас включить в свой вопрос части файла журнала, особенно конфигурации компилятора и строки EXECUTING. Если я увижу файл журнала, я смогу посоветовать, что, скорее всего, не так.

Scott McPeak 22.08.2024 20:50

Я понимаю, спасибо @ScottMcPeak. Я просмотрел журнал сборки и узнал, что фактическая команда во время сборки — c++ -options file.cpp. Думаю, c++ — это псевдоним g++ в Linux env. Cov-configure с C++ решил мою проблему, и я вижу, что cov-build генерирует файлы для их анализа. Спасибо всем в теме :)

az73 23.08.2024 05:35
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я просмотрел журнал сборки и узнал, что фактическая команда во время сборки — c++ -options file.cpp. Думаю, c++ — это псевдоним g++ в Linux env. Cov-configure с C++ решил мою проблему, и я вижу, что cov-build генерирует файлы для их анализа.

Другие вопросы по теме