IncrediBuild: Bagaimana mempercepat pembangunan dan analisis proyek Anda

"Berapa banyak lagi yang akan Anda kumpulkan?" - frasa yang diucapkan setiap developer setidaknya sekali di tengah malam. Ya, pertemuan bisa lama dan tidak ada jalan keluar darinya. Anda tidak bisa begitu saja mengambil dan memparalelkan semuanya bukan pada 8-12 core yang menyedihkan, tetapi jadi 100+. Atau mungkinkah?





Saya membutuhkan lebih banyak inti!

, , . , - , . , , , – , build .





, . , . , , ...





" " - . , . , , . , :)





!

- , . , , , . , - .





, - . , : . , ...





?

, , , . Chromium Linux, - , - ... ( ?). , .





, - , "" Unreal Engine. ! , UE Open Source.





, : Unreal Tournament. , - **.





100+ !

, , IncrediBuild. , - IncrediBuild 20 . , , , distcc, , Windows.





, . :





  • Slack;





  • .





, , Slack... - 12 20. , , . 145 (+/- 10) :)





( ), . , .





, , Visual Studio. ... :)





, , ShaderCompileWorker UnrealLightmass. , . :





, ?





, 30 6! . , , . , .





?

IncrediBuild , . , , , PVS-Studio. .





, : . , ; , ... – :(





, - 145 :





:





**





, :





, ... , . , ... , .





PVS-Studio #2

- Unreal Engine, :





, , -StaticAnalyzer . , . , .





- . .   , .





:





CLMonitor.exe monitor
      
      



. IncrediBuild, .





:





Total build time: 1710,84 seconds (Local executor: 1526,25 seconds)
      
      



, :





CLMonitor.exe saveDump -d dump.gz
      
      



, . , , , – .





:





CLMonitor.exe analyzeFromDump -l UE.plog -d dump.gz
      
      



, IncrediBuild. analyze.bat. profile.xml:





<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Profile FormatVersion="1">
  <Tools>
    <Tool Filename="CLMonitor" AllowIntercept="true" />
    <Tool Filename="cl" AllowRemote="true" />
    <Tool Filename="PVS-Studio" AllowRemote="true" />
  </Tools>
</Profile>
      
      



**





145- :





ibconsole /command=analyze.bat /profile=profile.xml
      
      



Build Monitor:





Ada banyak kesalahan pada grafik ini, bukan?
- , ?

. , - - . Unreal Tournament .





PVS-Studio #3

, , . , :





....\Build.h(42): fatal error C1189: #error: Exactly one of [UE_BUILD_DEBUG \
UE_BUILD_DEVELOPMENT UE_BUILD_TEST UE_BUILD_SHIPPING] should be defined to be 1
      
      



? – , 1:





  • UE_BUILD_DEBUG;





  • UE_BUILD_DEVELOPMENT;





  • UE_BUILD_TEST;





  • UE_BUILD_SHIPPING.





, , - . , . - . , precompile header, . :





#ifdef PVS_STUDIO

#define _DEBUG
#define UE_BUILD_DEVELOPMENT 1

#define WITH_EDITOR 1
#define WITH_ENGINE 1
#define WITH_UNREAL_DEVELOPER_TOOLS 1
#define WITH_PLUGIN_SUPPORT 1

#define UE_BUILD_MINIMAL 1

#define IS_MONOLITHIC 1
#define IS_PROGRAM 1

#define PLATFORM_WINDOWS 1

#endif
      
      



build.h





. , PVS_STUDIO.





, :





, 15 – . , 2 . 15 . ...





?

, N N . , ( ), , , .





, , . , . , :





Saya menjalankannya lima kali dan menghitung rata-rata peluncuran (Anda melihat angka-angka ini di grafik) :)
( ) :)



All Articles