You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 02-Use_the_Tools_Available.md
+6-6
Original file line number
Diff line number
Diff line change
@@ -35,6 +35,7 @@ Use an industry standard widely accepted build tool. This prevents you from rein
35
35
*[meson](http://mesonbuild.com/index.html) - Open source build system meant to be both extremely fast, and, even more importantly, as user friendly as possible.
36
36
*[premake](https://premake.github.io/)
37
37
*[xmake](https://xmake.io) - A cross-platform build utility based on Lua. Modern C/C++ build tools, Support multi-language hybrid compilation
Remember, it's not just a build tool, it's also a programming language. Try to maintain good clean build scripts and follow the recommended practices for the tool you are using.
40
41
@@ -46,9 +47,10 @@ Package management is an important topic in C++, with currently no clear winner.
46
47
*[hunter](https://github.com/ruslo/hunter) - CMake driven cross-platform package manager for C/C++
47
48
*[C++ Archive Network (CPPAN)](https://cppan.org/) - a crossplatform dependency manager for C++
48
49
*[qpm](https://www.qpm.io/) - Package manager for Qt
49
-
*[build2](https://build2.org/) - cargo-like package management for C++
*[Buckaroo](https://buckaroo.pm) - Truly decentralized cross-platform dependency manager for C/C++ and more
51
52
*[Vcpkg](https://github.com/microsoft/vcpkg) - Microsoft C++ Library Manager for Windows, Linux, and MacOS - [description](https://docs.microsoft.com/en-us/cpp/build/vcpkg)
53
+
*[CPM](https://github.com/cpm-cmake/CPM.cmake) - CMake package manager for modern CMake
52
54
53
55
## Continuous Integration
54
56
@@ -101,8 +103,9 @@ You should use as many compilers as you can for your platform(s). Each compiler
`-Wall -Wextra -Wshadow -Wnon-virtual-dtor -pedantic` - use these and consider the following (see descriptions below)
105
107
108
+
*`-pedantic` - Warn on language extensions
106
109
*`-Wall -Wextra` reasonable and standard
107
110
*`-Wshadow` warn the user if a variable declaration shadows one from a parent context
108
111
*`-Wnon-virtual-dtor` warn the user if a class with virtual functions has a non-virtual destructor. This helps catch hard to track down memory errors
@@ -293,6 +296,7 @@ A coverage analysis tool shall be run when tests are executed to make sure the e
293
296
### Reverse engineering tools
294
297
295
298
*[Cutter](https://cutter.re/) - A front-end for [Radare2](https://www.radare.org/n/radare2.html). It provides tools such as decompiler, disassembly, graph visualizer, hex editor.
299
+
*[Ghidra](https://ghidra-sre.org/) - Ghidra is a free and open source reverse engineering tool developed by the National Security Agency (NSA) of the United States.
*`_GLIBCXX_DEBUG` with GCC's implementation libstdc++ implementation. See [Krister's blog article](https://kristerw.blogspot.se/2018/03/detecting-incorrect-c-stl-usage.html).
340
344
341
-
### Heap Profiling
342
-
343
-
*[Memoro](https://epfl-vlsc.github.io/memoro/) - A detailed heap profiler
344
-
345
345
## Ignoring Warnings
346
346
347
347
If it is determined by team consensus that the compiler or analyzer is warning on something that is either incorrect or unavoidable, the team will disable the specific error to as localized part of the code as possible.
Copy file name to clipboardExpand all lines: 04-Considering_Safety.md
+2-2
Original file line number
Diff line number
Diff line change
@@ -80,7 +80,7 @@ private:
80
80
}
81
81
```
82
82
83
-
Why? Because passing and returning by reference leads to pointer operations instead by much more faster passing values in processor registers.
83
+
Why? Because passing and returning by reference leads to pointer operations, instead of much faster passing of values in processor registers.
84
84
85
85
## Avoid Raw Memory Access
86
86
@@ -142,4 +142,4 @@ If you have the possibility to use a compiler that supports C++11, you can use v
142
142
143
143
## Additional Resources
144
144
145
-
[How to Prevent The Next Heartbleed](http://www.dwheeler.com/essays/heartbleed.html) by David Wheeler is a good analysis of the current state of code safety and how to ensure safe code.
145
+
[How to Prevent The Next Heartbleed](https://dwheeler.com/essays/heartbleed.html) by David Wheeler is a good analysis of the current state of code safety and how to ensure safe code.
0 commit comments