bake-toolkit 2.20.4 → 2.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile.rb +3 -3
  3. data/bin/bake +46 -46
  4. data/bin/bake-doc +11 -11
  5. data/bin/bakery +179 -179
  6. data/bin/createVSProjects +213 -213
  7. data/documentation/_build/html/_sources/changelog.txt +456 -451
  8. data/documentation/_build/html/_sources/commandline/commandline.txt +107 -107
  9. data/documentation/_build/html/_sources/concepts/build_hierarchy.txt +34 -34
  10. data/documentation/_build/html/_sources/concepts/concepts.txt +14 -14
  11. data/documentation/_build/html/_sources/concepts/inject.txt +65 -65
  12. data/documentation/_build/html/_sources/concepts/link_order.txt +91 -91
  13. data/documentation/_build/html/_sources/concepts/prebuild.txt +56 -56
  14. data/documentation/_build/html/_sources/concepts/the_main_project.txt +45 -45
  15. data/documentation/_build/html/_sources/concepts/the_project_meta_file.txt +72 -72
  16. data/documentation/_build/html/_sources/ide/eclipse/eclipse.txt +25 -25
  17. data/documentation/_build/html/_sources/ide/eclipse/how_to_convert_existing_cdt_workspace.txt +31 -31
  18. data/documentation/_build/html/_sources/ide/eclipse/how_to_create_a_new_project_in_eclipse.txt +18 -18
  19. data/documentation/_build/html/_sources/ide/eclipse/how_to_create_a_workspace_in_eclipse.txt +27 -27
  20. data/documentation/_build/html/_sources/ide/eclipse/how_to_debug_in_eclipse.txt +38 -38
  21. data/documentation/_build/html/_sources/ide/eclipse/how_to_install_eclipse_plugin.txt +44 -44
  22. data/documentation/_build/html/_sources/ide/eclipse/how_to_use_bake_in_eclipse.txt +86 -86
  23. data/documentation/_build/html/_sources/ide/ide_integrations.txt +8 -8
  24. data/documentation/_build/html/_sources/ide/vs/how_to_create_vs_projects.txt +15 -15
  25. data/documentation/_build/html/_sources/ide/vs/how_to_debug_in_vs.txt +35 -35
  26. data/documentation/_build/html/_sources/ide/vs/how_to_used_bake_in_vs.txt +35 -35
  27. data/documentation/_build/html/_sources/ide/vs/vs.txt +10 -10
  28. data/documentation/_build/html/_sources/ide/vs/vs_install.txt +43 -43
  29. data/documentation/_build/html/_sources/index.txt +33 -33
  30. data/documentation/_build/html/_sources/install/install_bake.txt +112 -112
  31. data/documentation/_build/html/_sources/internal.txt +50 -50
  32. data/documentation/_build/html/_sources/known_issues.txt +9 -9
  33. data/documentation/_build/html/_sources/license.txt +4 -4
  34. data/documentation/_build/html/_sources/performance/performance.txt +104 -104
  35. data/documentation/_build/html/_sources/quickstart/quickstart.txt +70 -70
  36. data/documentation/_build/html/_sources/syntax/adapt_configs.txt +143 -143
  37. data/documentation/_build/html/_sources/syntax/auto_adjustment.txt +43 -43
  38. data/documentation/_build/html/_sources/syntax/derive_configs.txt +93 -94
  39. data/documentation/_build/html/_sources/syntax/project_meta_syntax.txt +19 -19
  40. data/documentation/_build/html/_sources/syntax/syntax.txt +11 -11
  41. data/documentation/_build/html/_sources/syntax/variable_substitutions.txt +147 -147
  42. data/documentation/_build/html/_sources/tips_and_tricks/dot.txt +34 -34
  43. data/documentation/_build/html/_sources/tips_and_tricks/how_to_use_bake_with_cygwin.txt +62 -62
  44. data/documentation/_build/html/_sources/tips_and_tricks/static_code_analysis.txt +122 -122
  45. data/documentation/_build/html/_sources/tips_and_tricks/the_bakery.txt +72 -72
  46. data/documentation/_build/html/_sources/tips_and_tricks/the_clang.txt +43 -43
  47. data/documentation/_build/html/_sources/tips_and_tricks/tips_and_tricks.txt +34 -34
  48. data/documentation/_build/html/_sources/why_bake/why_bake.txt +40 -40
  49. data/documentation/_build/html/changelog.html +7 -0
  50. data/documentation/_build/html/commandline/commandline.html +2 -2
  51. data/documentation/_build/html/concepts/link_order.html +2 -2
  52. data/documentation/_build/html/concepts/prebuild.html +2 -2
  53. data/documentation/_build/html/index.html +4 -4
  54. data/documentation/_build/html/performance/performance.html +2 -2
  55. data/documentation/_build/html/searchindex.js +1 -1
  56. data/documentation/_build/html/syntax/adapt_configs.html +2 -2
  57. data/documentation/_build/html/syntax/syntax.html +2 -2
  58. data/documentation/_build/html/tips_and_tricks/the_clang.html +2 -2
  59. data/documentation/_build/html/why_bake/why_bake.html +2 -2
  60. data/lib/adapt/config/loader.rb +112 -112
  61. data/lib/bake/bundle.rb +158 -158
  62. data/lib/bake/cache.rb +179 -180
  63. data/lib/bake/config/checks.rb +68 -68
  64. data/lib/bake/config/loader.rb +363 -363
  65. data/lib/bake/libElement.rb +176 -176
  66. data/lib/bake/mergeConfig.rb +208 -208
  67. data/lib/bake/model/language.rb +45 -45
  68. data/lib/bake/model/loader.rb +99 -99
  69. data/lib/bake/model/metamodel.rb +307 -307
  70. data/lib/bake/model/metamodel_ext.rb +27 -27
  71. data/lib/bake/options/create.rb +95 -95
  72. data/lib/bake/options/options.rb +315 -310
  73. data/lib/bake/options/showDoc.rb +20 -20
  74. data/lib/bake/options/showLicense.rb +9 -9
  75. data/lib/bake/options/showToolchains.rb +38 -38
  76. data/lib/bake/options/usage.rb +79 -68
  77. data/lib/bake/subst.rb +313 -313
  78. data/lib/bake/toolchain/clang.rb +44 -44
  79. data/lib/bake/toolchain/clang_analyze.rb +31 -31
  80. data/lib/bake/toolchain/colorizing_formatter.rb +125 -125
  81. data/lib/bake/toolchain/diab.rb +53 -53
  82. data/lib/bake/toolchain/errorparser/diab_compiler_error_parser.rb +40 -40
  83. data/lib/bake/toolchain/errorparser/diab_linker_error_parser.rb +41 -41
  84. data/lib/bake/toolchain/errorparser/error_parser.rb +71 -71
  85. data/lib/bake/toolchain/errorparser/gcc_compiler_error_parser.rb +35 -35
  86. data/lib/bake/toolchain/errorparser/gcc_linker_error_parser.rb +35 -35
  87. data/lib/bake/toolchain/errorparser/greenhills_compiler_error_parser.rb +32 -32
  88. data/lib/bake/toolchain/errorparser/greenhills_linker_error_parser.rb +44 -44
  89. data/lib/bake/toolchain/errorparser/keil_compiler_error_parser.rb +40 -40
  90. data/lib/bake/toolchain/errorparser/keil_linker_error_parser.rb +30 -30
  91. data/lib/bake/toolchain/errorparser/lint_error_parser.rb +34 -34
  92. data/lib/bake/toolchain/errorparser/msvc_compiler_error_parser.rb +63 -63
  93. data/lib/bake/toolchain/errorparser/msvc_linker_error_parser.rb +42 -42
  94. data/lib/bake/toolchain/errorparser/process_output.rb +2 -2
  95. data/lib/bake/toolchain/errorparser/ti_compiler_error_parser.rb +30 -30
  96. data/lib/bake/toolchain/errorparser/ti_linker_error_parser.rb +30 -30
  97. data/lib/bake/toolchain/gcc.rb +49 -49
  98. data/lib/bake/toolchain/gcc_env.rb +55 -55
  99. data/lib/bake/toolchain/greenhills.rb +52 -52
  100. data/lib/bake/toolchain/keil.rb +53 -53
  101. data/lib/bake/toolchain/lint.rb +20 -20
  102. data/lib/bake/toolchain/msvc.rb +58 -58
  103. data/lib/bake/toolchain/provider.rb +146 -146
  104. data/lib/bake/toolchain/ti.rb +47 -47
  105. data/lib/bake/util.rb +149 -149
  106. data/lib/bakery/buildPattern.rb +24 -24
  107. data/lib/bakery/model/language.rb +22 -22
  108. data/lib/bakery/model/loader.rb +55 -55
  109. data/lib/bakery/model/metamodel.rb +48 -48
  110. data/lib/bakery/options/options.rb +87 -87
  111. data/lib/bakery/toBake.rb +81 -81
  112. data/lib/blocks/block.rb +324 -324
  113. data/lib/blocks/blockBase.rb +204 -204
  114. data/lib/blocks/commandLine.rb +38 -38
  115. data/lib/blocks/compile.rb +529 -528
  116. data/lib/blocks/convert.rb +41 -41
  117. data/lib/blocks/docu.rb +30 -30
  118. data/lib/blocks/executable.rb +174 -174
  119. data/lib/blocks/has_execute_command.rb +31 -31
  120. data/lib/blocks/library.rb +114 -114
  121. data/lib/blocks/lint.rb +56 -56
  122. data/lib/blocks/makefile.rb +100 -100
  123. data/lib/blocks/showIncludes.rb +140 -125
  124. data/lib/common/abortException.rb +4 -4
  125. data/lib/common/cleanup.rb +10 -10
  126. data/lib/common/exit_helper.rb +38 -38
  127. data/lib/common/ext/file.rb +88 -88
  128. data/lib/common/ext/rtext.rb +11 -11
  129. data/lib/common/ext/stdout.rb +45 -45
  130. data/lib/common/ide_interface.rb +194 -194
  131. data/lib/common/options/parser.rb +95 -85
  132. data/lib/common/process.rb +64 -64
  133. data/lib/common/utils.rb +52 -52
  134. data/lib/common/version.rb +31 -23
  135. data/lib/multithread/job.rb +44 -44
  136. data/lib/tocxx.rb +558 -555
  137. data/lib/vs/options.rb +69 -69
  138. data/license.txt +90 -90
  139. metadata +2 -2
@@ -1,122 +1,122 @@
1
- Static Code Analysis
2
- ====================
3
-
4
- Static code analysis often is part or a pre step of the build, even though bake provides presteps which can be used to
5
- add customized steps, we choose to add explicit support for static code analysis due to the fact that the analysis often
6
- depends on information well known by the build system (include pahts, compiler flags, etc.). Currently bake has built in
7
- support for *Pc-Lint*.
8
-
9
- Lint
10
- ****
11
-
12
- With bake you can lint LibraryConfigs, ExecutableConfigs, single files and the complete workspace (in this case the projects are linted separately).
13
- The CPP Toolchain settings of the project are used regardless of the file type and file specific options.
14
- It is possible to specify lnt-files with LintPolicy, but you can add every other lint command line option as well.
15
-
16
- Basic Setup
17
- -----------
18
-
19
- #. Install `lint <http://www.gimpel.com/html/products.htm>`_.
20
- #. Make sure the The lint executable 'lint-nt.exe' is in the path.
21
-
22
- .. attention::
23
-
24
- even though there is a unix version of pc-lint the asscoated binary name must be lint-nt.exe otherwise
25
- it won't be recorgnized by the bake build system.
26
-
27
- After doing this steps you are able to lint your build configurations (LibraryConfigs and ExecutableConfigs) using the *--lint* flag on the command line.
28
-
29
- Example
30
- +++++++
31
- .. code-block:: console
32
-
33
- User@Host:~$ bake Debug -p MyLibraryProject --lint
34
-
35
-
36
- Configuring Lint
37
- ----------------
38
-
39
- In order to configure lint in the Project.meta file, just use the *LintPolicy* command, which forwards the supplied
40
- the parameters to lint.
41
-
42
- .. code-block:: text
43
-
44
- DefaultToolchain GCC {
45
- ...
46
- LintPolicy "$(ProjectDir)/lint/misra.lnt"
47
- LintPolicy "$(ProjectDir)/lint/suppressions.lnt"
48
- }
49
-
50
- Example
51
- +++++++
52
-
53
- This example shows how to redirect the output to single xml files placed into the main project folder.
54
-
55
- .. code-block:: text
56
-
57
- DefaultToolchain GCC {
58
- LintPolicy "-os($(MainProjectDir)/$(ProjectName)_$(ConfigName)_lintout.xml)"
59
- LintPolicy "-v"
60
- LintPolicy "+xml(doc)"
61
- LintPolicy "-format=%f %l %t %n %m"
62
- LintPolicy "-format_specific= "
63
- LintPolicy "-pragma(message)"
64
- ...
65
- }
66
-
67
-
68
- Known Issues
69
- ------------
70
- bake only searches for lint-nt.exe
71
- +++++++++++++++++++++++++++++++++++
72
- **Issue:**
73
- bake currently does not search for all possible names of the lint application, it only searches for a file called *lint-nt.exe*.
74
-
75
- **Solution:**
76
- If you have another lint command (e.g. because you are using flexe lint on unix)
77
- just create an symlink/alias which is called *lint-nt.exe*.
78
-
79
- Lint fails due to missing compiler includes and defines
80
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
81
- **Issue:**
82
- Lint will fail if compiler internal includes and defines are missing.
83
-
84
- **Solution:**
85
-
86
- Lint comes with some helper files, handle this issue. In order to get a list of all needed
87
- helper files e.g. for GCC, use the following command.
88
-
89
- .. code-block:: console
90
-
91
- User@Host:~$ make -f .../PcLint/../lnt/co-gcc.mak
92
-
93
- You will get a output like this:
94
-
95
- .. code-block:: text
96
-
97
- gcc-include-path.lnt, lint_cmac.h, lint_cppmac.h and size-options.lnt.
98
-
99
- You can now add the needed includes and LintPolicies (.lnt files) to your bake
100
- configuration.
101
-
102
- Lint error due to too many includes
103
- +++++++++++++++++++++++++++++++++++
104
-
105
- **Issue:**
106
- In rare cases lint has problems if it has to open too many (include) files.
107
-
108
- **Solution:**
109
- You can use the *--lint-max* and the *--lint-min* options to get around this issue.
110
-
111
- Example:
112
-
113
- .. code-block:: console
114
-
115
- User@Host:~$ bake Debug -p MyLibraryProject --lint --lint-max 50 #(lints the first 51 files)
116
- User@Host:~$ bake Debug -p MyLibraryProject --lint --lint-min 51 --lint-max 100 #(lints the next 50 files)
117
- User@Host:~$ bake Debug -p MyLibraryProject --lint --lint-min 101 #(lints the rest of the files)
118
-
119
-
120
- .. Clang Analyze
121
- .. *************
122
-
1
+ Static Code Analysis
2
+ ====================
3
+
4
+ Static code analysis often is part or a pre step of the build, even though bake provides presteps which can be used to
5
+ add customized steps, we choose to add explicit support for static code analysis due to the fact that the analysis often
6
+ depends on information well known by the build system (include pahts, compiler flags, etc.). Currently bake has built in
7
+ support for *Pc-Lint*.
8
+
9
+ Lint
10
+ ****
11
+
12
+ With bake you can lint LibraryConfigs, ExecutableConfigs, single files and the complete workspace (in this case the projects are linted separately).
13
+ The CPP Toolchain settings of the project are used regardless of the file type and file specific options.
14
+ It is possible to specify lnt-files with LintPolicy, but you can add every other lint command line option as well.
15
+
16
+ Basic Setup
17
+ -----------
18
+
19
+ #. Install `lint <http://www.gimpel.com/html/products.htm>`_.
20
+ #. Make sure the The lint executable 'lint-nt.exe' is in the path.
21
+
22
+ .. attention::
23
+
24
+ even though there is a unix version of pc-lint the asscoated binary name must be lint-nt.exe otherwise
25
+ it won't be recorgnized by the bake build system.
26
+
27
+ After doing this steps you are able to lint your build configurations (LibraryConfigs and ExecutableConfigs) using the *--lint* flag on the command line.
28
+
29
+ Example
30
+ +++++++
31
+ .. code-block:: console
32
+
33
+ User@Host:~$ bake Debug -p MyLibraryProject --lint
34
+
35
+
36
+ Configuring Lint
37
+ ----------------
38
+
39
+ In order to configure lint in the Project.meta file, just use the *LintPolicy* command, which forwards the supplied
40
+ the parameters to lint.
41
+
42
+ .. code-block:: text
43
+
44
+ DefaultToolchain GCC {
45
+ ...
46
+ LintPolicy "$(ProjectDir)/lint/misra.lnt"
47
+ LintPolicy "$(ProjectDir)/lint/suppressions.lnt"
48
+ }
49
+
50
+ Example
51
+ +++++++
52
+
53
+ This example shows how to redirect the output to single xml files placed into the main project folder.
54
+
55
+ .. code-block:: text
56
+
57
+ DefaultToolchain GCC {
58
+ LintPolicy "-os($(MainProjectDir)/$(ProjectName)_$(ConfigName)_lintout.xml)"
59
+ LintPolicy "-v"
60
+ LintPolicy "+xml(doc)"
61
+ LintPolicy "-format=%f %l %t %n %m"
62
+ LintPolicy "-format_specific= "
63
+ LintPolicy "-pragma(message)"
64
+ ...
65
+ }
66
+
67
+
68
+ Known Issues
69
+ ------------
70
+ bake only searches for lint-nt.exe
71
+ +++++++++++++++++++++++++++++++++++
72
+ **Issue:**
73
+ bake currently does not search for all possible names of the lint application, it only searches for a file called *lint-nt.exe*.
74
+
75
+ **Solution:**
76
+ If you have another lint command (e.g. because you are using flexe lint on unix)
77
+ just create an symlink/alias which is called *lint-nt.exe*.
78
+
79
+ Lint fails due to missing compiler includes and defines
80
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++
81
+ **Issue:**
82
+ Lint will fail if compiler internal includes and defines are missing.
83
+
84
+ **Solution:**
85
+
86
+ Lint comes with some helper files, handle this issue. In order to get a list of all needed
87
+ helper files e.g. for GCC, use the following command.
88
+
89
+ .. code-block:: console
90
+
91
+ User@Host:~$ make -f .../PcLint/../lnt/co-gcc.mak
92
+
93
+ You will get a output like this:
94
+
95
+ .. code-block:: text
96
+
97
+ gcc-include-path.lnt, lint_cmac.h, lint_cppmac.h and size-options.lnt.
98
+
99
+ You can now add the needed includes and LintPolicies (.lnt files) to your bake
100
+ configuration.
101
+
102
+ Lint error due to too many includes
103
+ +++++++++++++++++++++++++++++++++++
104
+
105
+ **Issue:**
106
+ In rare cases lint has problems if it has to open too many (include) files.
107
+
108
+ **Solution:**
109
+ You can use the *--lint-max* and the *--lint-min* options to get around this issue.
110
+
111
+ Example:
112
+
113
+ .. code-block:: console
114
+
115
+ User@Host:~$ bake Debug -p MyLibraryProject --lint --lint-max 50 #(lints the first 51 files)
116
+ User@Host:~$ bake Debug -p MyLibraryProject --lint --lint-min 51 --lint-max 100 #(lints the next 50 files)
117
+ User@Host:~$ bake Debug -p MyLibraryProject --lint --lint-min 101 #(lints the rest of the files)
118
+
119
+
120
+ .. Clang Analyze
121
+ .. *************
122
+
@@ -1,72 +1,72 @@
1
- The Bakery
2
- ==========
3
-
4
- What is the Bakery
5
- ******************
6
- bakery is part of the bake-toolkit distribution and it is used to build several independent projects at once.
7
- It's very useful for e.g. compiling and running all unit tests.
8
- The collections are specified in Collection.meta files.
9
-
10
- How to use the Bakery on the commandline
11
- ****************************************
12
- Call *bakery -h* to display the command line options.
13
- The most important options are the collection name (*-b*) and the collection directory (*-m*, default is current directory).
14
-
15
- Examples:
16
-
17
- Build all unittests:
18
-
19
- .. code-block:: console
20
-
21
- bakery -b AllUnitTests
22
-
23
- It is possible to omit *-b*:
24
-
25
- .. code-block:: console
26
-
27
- bakery AllUnitTests
28
-
29
- Clean all unittests:
30
-
31
- .. code-block:: console
32
-
33
- bakery -b AllUnitTests -c
34
-
35
- Build all unittests, workspace checked out into two roots, console supports colors, stop on first error, run the unittests after build:
36
-
37
- .. code-block:: console
38
-
39
- bakery -b AllUnitTests -m w:/root1/mainProj -w w:/root2 -r -a black --do run
40
-
41
-
42
- Syntax of Collection.meta
43
- *************************
44
- Move the mouse cursor over the blue elements to display more information.
45
-
46
- .. raw:: html
47
- :file: ../_static/syntax_collection_meta.html
48
-
49
- .. note::
50
-
51
- * Use double quotes (") if the strings have wildcards
52
- * Use hash marks (#) for comments.
53
-
54
- Example:
55
-
56
- .. code-block:: text
57
-
58
- Collection AllUnitTests {
59
- Project "*", config: UnitTest
60
- }
61
- Collection UnitTestLibsWithoutBsp {
62
- Project "*", config: "UnitTestLib*"
63
- Exclude "bsp*", config: "*"
64
- }
65
- Collection MySpecialCollection {
66
- Project Main1, config: Debug
67
- Project Main2, config: Release
68
- Project Sub3, config: Debug
69
- SubCollection UnitTestLibsWithoutBsp
70
- }
71
-
72
-
1
+ The Bakery
2
+ ==========
3
+
4
+ What is the Bakery
5
+ ******************
6
+ bakery is part of the bake-toolkit distribution and it is used to build several independent projects at once.
7
+ It's very useful for e.g. compiling and running all unit tests.
8
+ The collections are specified in Collection.meta files.
9
+
10
+ How to use the Bakery on the commandline
11
+ ****************************************
12
+ Call *bakery -h* to display the command line options.
13
+ The most important options are the collection name (*-b*) and the collection directory (*-m*, default is current directory).
14
+
15
+ Examples:
16
+
17
+ Build all unittests:
18
+
19
+ .. code-block:: console
20
+
21
+ bakery -b AllUnitTests
22
+
23
+ It is possible to omit *-b*:
24
+
25
+ .. code-block:: console
26
+
27
+ bakery AllUnitTests
28
+
29
+ Clean all unittests:
30
+
31
+ .. code-block:: console
32
+
33
+ bakery -b AllUnitTests -c
34
+
35
+ Build all unittests, workspace checked out into two roots, console supports colors, stop on first error, run the unittests after build:
36
+
37
+ .. code-block:: console
38
+
39
+ bakery -b AllUnitTests -m w:/root1/mainProj -w w:/root2 -r -a black --do run
40
+
41
+
42
+ Syntax of Collection.meta
43
+ *************************
44
+ Move the mouse cursor over the blue elements to display more information.
45
+
46
+ .. raw:: html
47
+ :file: ../_static/syntax_collection_meta.html
48
+
49
+ .. note::
50
+
51
+ * Use double quotes (") if the strings have wildcards
52
+ * Use hash marks (#) for comments.
53
+
54
+ Example:
55
+
56
+ .. code-block:: text
57
+
58
+ Collection AllUnitTests {
59
+ Project "*", config: UnitTest
60
+ }
61
+ Collection UnitTestLibsWithoutBsp {
62
+ Project "*", config: "UnitTestLib*"
63
+ Exclude "bsp*", config: "*"
64
+ }
65
+ Collection MySpecialCollection {
66
+ Project Main1, config: Debug
67
+ Project Main2, config: Release
68
+ Project Sub3, config: Debug
69
+ SubCollection UnitTestLibsWithoutBsp
70
+ }
71
+
72
+
@@ -1,43 +1,43 @@
1
- Clang Analyze
2
- *************
3
-
4
- bake can be easily used to analyze source files with Clang. It works simliar to regular compiling, but instead of
5
- invoking the compiler, the Clang Analyzer will be called.
6
-
7
- Imagine you have a workspace with the following "main" project:
8
-
9
- .. code-block:: console
10
-
11
- Project {
12
- ...
13
- ExecutableConfig Debug {
14
- ...
15
- DefaultToolchain GCC
16
- }
17
- }
18
-
19
- Either edit this Project.meta or create a new "analyze" project:
20
-
21
- .. code-block:: console
22
-
23
- Project {
24
- CustomConfig Analyze {
25
- Dependency main, config: Debug
26
- DefaultToolchain CLANG_ANALYZE {
27
- Compiler CPP {
28
- Flags "-analyzer-checker=deadcode,security,alpha,unix,cplusplus"
29
- }
30
- Compiler C {
31
- Flags "-analyzer-checker=deadcode,security,alpha,unix"
32
- }
33
- }
34
- }
35
- }
36
-
37
- As you can see the DefaultToolchain GCC is replaced with CLANG_ANALYZE. Call bake like this:
38
-
39
- .. code-block:: console
40
-
41
- bake Analyze -f .
42
-
43
- "-f" means that only the compilation step will take place. The "." means files with a "." in the name will be compiled (= all files). If you want to analyze only C++ files, you can write "-f .cpp"
1
+ Clang Analyze
2
+ *************
3
+
4
+ bake can be easily used to analyze source files with Clang. It works simliar to regular compiling, but instead of
5
+ invoking the compiler, the Clang Analyzer will be called.
6
+
7
+ Imagine you have a workspace with the following "main" project:
8
+
9
+ .. code-block:: console
10
+
11
+ Project {
12
+ ...
13
+ ExecutableConfig Debug {
14
+ ...
15
+ DefaultToolchain GCC
16
+ }
17
+ }
18
+
19
+ Either edit this Project.meta or create a new "analyze" project:
20
+
21
+ .. code-block:: console
22
+
23
+ Project {
24
+ CustomConfig Analyze {
25
+ Dependency main, config: Debug
26
+ DefaultToolchain CLANG_ANALYZE {
27
+ Compiler CPP {
28
+ Flags "-analyzer-checker=deadcode,security,alpha,unix,cplusplus"
29
+ }
30
+ Compiler C {
31
+ Flags "-analyzer-checker=deadcode,security,alpha,unix"
32
+ }
33
+ }
34
+ }
35
+ }
36
+
37
+ As you can see the DefaultToolchain GCC is replaced with CLANG_ANALYZE. Call bake like this:
38
+
39
+ .. code-block:: console
40
+
41
+ bake Analyze -f .
42
+
43
+ "-f" means that only the compilation step will take place. The "." means files with a "." in the name will be compiled (= all files). If you want to analyze only C++ files, you can write "-f .cpp"