bake-toolkit 2.28.0 → 2.28.1
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.
- checksums.yaml +4 -4
- data/documentation/_build/html/_sources/changelog.txt +3 -0
- data/documentation/_build/html/_sources/index.txt +1 -1
- data/documentation/_build/html/_static/logo_tiny_48.png +0 -0
- data/documentation/_build/html/changelog.html +1154 -1149
- data/documentation/_build/html/commandline/commandline.html +285 -285
- data/documentation/_build/html/concepts/build_hierarchy.html +204 -204
- data/documentation/_build/html/concepts/concepts.html +196 -196
- data/documentation/_build/html/concepts/inject.html +216 -216
- data/documentation/_build/html/concepts/link_order.html +245 -245
- data/documentation/_build/html/concepts/prebuild.html +205 -205
- data/documentation/_build/html/concepts/the_main_project.html +260 -260
- data/documentation/_build/html/concepts/the_project_meta_file.html +288 -288
- data/documentation/_build/html/genindex.html +152 -152
- data/documentation/_build/html/ide/eclipse/eclipse.html +186 -186
- data/documentation/_build/html/ide/eclipse/how_to_convert_existing_cdt_workspace.html +208 -208
- data/documentation/_build/html/ide/eclipse/how_to_create_a_new_project_in_eclipse.html +191 -191
- data/documentation/_build/html/ide/eclipse/how_to_create_a_workspace_in_eclipse.html +198 -198
- data/documentation/_build/html/ide/eclipse/how_to_debug_in_eclipse.html +198 -198
- data/documentation/_build/html/ide/eclipse/how_to_install_eclipse_plugin.html +196 -196
- data/documentation/_build/html/ide/eclipse/how_to_use_bake_in_eclipse.html +256 -256
- data/documentation/_build/html/ide/ide_integrations.html +185 -185
- data/documentation/_build/html/ide/vs/how_to_create_vs_projects.html +171 -171
- data/documentation/_build/html/ide/vs/how_to_debug_in_vs.html +185 -185
- data/documentation/_build/html/ide/vs/how_to_used_bake_in_vs.html +190 -190
- data/documentation/_build/html/ide/vs/vs.html +170 -170
- data/documentation/_build/html/ide/vs/vs_install.html +202 -202
- data/documentation/_build/html/index.html +246 -246
- data/documentation/_build/html/install/install_bake.html +279 -279
- data/documentation/_build/html/internal.html +217 -217
- data/documentation/_build/html/known_issues.html +173 -173
- data/documentation/_build/html/license.html +236 -236
- data/documentation/_build/html/performance/performance.html +373 -373
- data/documentation/_build/html/quickstart/quickstart.html +236 -236
- data/documentation/_build/html/search.html +174 -174
- data/documentation/_build/html/searchindex.js +1 -1
- data/documentation/_build/html/syntax/adapt_configs.html +370 -370
- data/documentation/_build/html/syntax/auto_adjustment.html +189 -189
- data/documentation/_build/html/syntax/derive_configs.html +247 -247
- data/documentation/_build/html/syntax/project_meta_syntax.html +923 -923
- data/documentation/_build/html/syntax/syntax.html +196 -196
- data/documentation/_build/html/syntax/variable_substitutions.html +365 -365
- data/documentation/_build/html/tips_and_tricks/bakeclean.html +169 -169
- data/documentation/_build/html/tips_and_tricks/dot.html +186 -186
- data/documentation/_build/html/tips_and_tricks/how_to_use_bake_with_cygwin.html +214 -214
- data/documentation/_build/html/tips_and_tricks/qac.html +297 -297
- data/documentation/_build/html/tips_and_tricks/the_bakery.html +405 -405
- data/documentation/_build/html/tips_and_tricks/the_clang.html +201 -201
- data/documentation/_build/html/tips_and_tricks/tips_and_tricks.html +198 -198
- data/documentation/_build/html/why_bake/why_bake.html +241 -241
- data/lib/bake/config/checks.rb +76 -68
- data/lib/bake/model/metamodel.rb +6 -0
- data/lib/common/version.rb +1 -1
- metadata +3 -5
- data/documentation/_build/html/_sources/tips_and_tricks/static_code_analysis.txt +0 -122
- data/documentation/_build/html/_static/logo_conformant_48.png +0 -0
- data/documentation/_build/html/tips_and_tricks/static_code_analysis.html +0 -285
data/lib/bake/config/checks.rb
CHANGED
|
@@ -1,69 +1,77 @@
|
|
|
1
|
-
module Bake
|
|
2
|
-
module Configs
|
|
3
|
-
|
|
4
|
-
class Checks
|
|
5
|
-
|
|
6
|
-
def self.symlinkCheck(filename)
|
|
7
|
-
dirOfProjMeta = File.dirname(filename)
|
|
8
|
-
Dir.chdir(dirOfProjMeta) do
|
|
9
|
-
if Dir.pwd != dirOfProjMeta and File.dirname(Dir.pwd) != File.dirname(dirOfProjMeta)
|
|
10
|
-
isSym = false
|
|
11
|
-
begin
|
|
12
|
-
isSym = File.symlink?(dirOfProjMeta)
|
|
13
|
-
rescue
|
|
14
|
-
end
|
|
15
|
-
if isSym
|
|
16
|
-
Bake.formatter.printError("Symlinks only allowed with the same parent dir as the target: #{dirOfProjMeta} --> #{Dir.pwd}", filename)
|
|
17
|
-
ExitHelper.exit(1)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def self.commonMetamodelCheck(configs, filename, isAdapt = false)
|
|
24
|
-
|
|
25
|
-
if configs.length == 0 && !isAdapt
|
|
26
|
-
Bake.formatter.printError("No config found", filename)
|
|
27
|
-
ExitHelper.exit(1)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
configs.each do |config|
|
|
31
|
-
if config.respond_to?("toolchain") and config.toolchain
|
|
32
|
-
config.toolchain.compiler.each do |c|
|
|
33
|
-
if not c.internalDefines.nil? and c.internalDefines != ""
|
|
34
|
-
Bake.formatter.printError("InternalDefines only allowed in DefaultToolchain", c.internalDefines)
|
|
35
|
-
ExitHelper.exit(1)
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
if
|
|
50
|
-
Bake.formatter.printError("IncludeDir must
|
|
51
|
-
ExitHelper.exit(1)
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
1
|
+
module Bake
|
|
2
|
+
module Configs
|
|
3
|
+
|
|
4
|
+
class Checks
|
|
5
|
+
|
|
6
|
+
def self.symlinkCheck(filename)
|
|
7
|
+
dirOfProjMeta = File.dirname(filename)
|
|
8
|
+
Dir.chdir(dirOfProjMeta) do
|
|
9
|
+
if Dir.pwd != dirOfProjMeta and File.dirname(Dir.pwd) != File.dirname(dirOfProjMeta)
|
|
10
|
+
isSym = false
|
|
11
|
+
begin
|
|
12
|
+
isSym = File.symlink?(dirOfProjMeta)
|
|
13
|
+
rescue
|
|
14
|
+
end
|
|
15
|
+
if isSym
|
|
16
|
+
Bake.formatter.printError("Symlinks only allowed with the same parent dir as the target: #{dirOfProjMeta} --> #{Dir.pwd}", filename)
|
|
17
|
+
ExitHelper.exit(1)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.commonMetamodelCheck(configs, filename, isAdapt = false)
|
|
24
|
+
|
|
25
|
+
if configs.length == 0 && !isAdapt
|
|
26
|
+
Bake.formatter.printError("No config found", filename)
|
|
27
|
+
ExitHelper.exit(1)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
configs.each do |config|
|
|
31
|
+
if config.respond_to?("toolchain") and config.toolchain
|
|
32
|
+
config.toolchain.compiler.each do |c|
|
|
33
|
+
if not c.internalDefines.nil? and c.internalDefines != ""
|
|
34
|
+
Bake.formatter.printError("InternalDefines only allowed in DefaultToolchain", c.internalDefines)
|
|
35
|
+
ExitHelper.exit(1)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
config.toolchain.lintPolicy.each do |l|
|
|
39
|
+
Bake.formatter.printWarning("Lint support was removed. Please delete LintPolicy from Project.meta.", l)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
if config.respond_to?("defaultToolchain") and config.defaultToolchain
|
|
43
|
+
config.defaultToolchain.lintPolicy.each do |l|
|
|
44
|
+
Bake.formatter.printWarning("Lint support was removed. Please delete LintPolicy from Project.meta.", l)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
config.includeDir.each do |inc|
|
|
49
|
+
if not ["front", "back", ""].include?inc.inject
|
|
50
|
+
Bake.formatter.printError("inject of IncludeDir must be 'front' or 'back'", inc)
|
|
51
|
+
ExitHelper.exit(1)
|
|
52
|
+
end
|
|
53
|
+
if not ["front", "back", ""].include?inc.infix
|
|
54
|
+
Bake.formatter.printError("infix of IncludeDir must be 'front' or 'back'", inc)
|
|
55
|
+
ExitHelper.exit(1)
|
|
56
|
+
end
|
|
57
|
+
if (inc.infix != "" and inc.inject != "")
|
|
58
|
+
Bake.formatter.printError("IncludeDir must have inject OR infix (deprecated)", inc)
|
|
59
|
+
ExitHelper.exit(1)
|
|
60
|
+
end
|
|
61
|
+
end if config.respond_to?("includeDir")
|
|
62
|
+
|
|
63
|
+
config.dependency.each do |d|
|
|
64
|
+
if not ["front", "back", ""].include?d.inject
|
|
65
|
+
Bake.formatter.printError("inject of Dependency must be 'front' or 'back'", d)
|
|
66
|
+
ExitHelper.exit(1)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
end
|
|
69
77
|
end
|
data/lib/bake/model/metamodel.rb
CHANGED
|
@@ -75,6 +75,10 @@ module Bake
|
|
|
75
75
|
contains_one 'internalDefines', InternalDefines, 'parent'
|
|
76
76
|
end
|
|
77
77
|
|
|
78
|
+
class LintPolicy < ModelElement
|
|
79
|
+
has_attr 'name', String, :defaultValueLiteral => ""
|
|
80
|
+
end
|
|
81
|
+
|
|
78
82
|
class Docu < ModelElement
|
|
79
83
|
has_attr 'name', String, :defaultValueLiteral => ""
|
|
80
84
|
end
|
|
@@ -86,6 +90,7 @@ module Bake
|
|
|
86
90
|
contains_many 'compiler', Compiler, 'parent'
|
|
87
91
|
contains_one 'archiver', Archiver, 'parent'
|
|
88
92
|
contains_one 'linker', Linker, 'parent'
|
|
93
|
+
contains_many 'lintPolicy', LintPolicy, 'parent'
|
|
89
94
|
contains_one 'internalIncludes', InternalIncludes, 'parent'
|
|
90
95
|
contains_one 'docu', Docu, 'parent'
|
|
91
96
|
end
|
|
@@ -95,6 +100,7 @@ module Bake
|
|
|
95
100
|
contains_many 'compiler', Compiler, 'parent'
|
|
96
101
|
contains_one 'archiver', Archiver, 'parent'
|
|
97
102
|
contains_one 'linker', Linker, 'parent'
|
|
103
|
+
contains_many 'lintPolicy', LintPolicy, 'parent'
|
|
98
104
|
contains_one 'docu', Docu, 'parent'
|
|
99
105
|
end
|
|
100
106
|
|
data/lib/common/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bake-toolkit
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.28.
|
|
4
|
+
version: 2.28.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alexander Schaal
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-01-
|
|
11
|
+
date: 2017-01-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rtext
|
|
@@ -220,7 +220,6 @@ files:
|
|
|
220
220
|
- documentation/_build/html/_sources/tips_and_tricks/dot.txt
|
|
221
221
|
- documentation/_build/html/_sources/tips_and_tricks/how_to_use_bake_with_cygwin.txt
|
|
222
222
|
- documentation/_build/html/_sources/tips_and_tricks/qac.txt
|
|
223
|
-
- documentation/_build/html/_sources/tips_and_tricks/static_code_analysis.txt
|
|
224
223
|
- documentation/_build/html/_sources/tips_and_tricks/the_bakery.txt
|
|
225
224
|
- documentation/_build/html/_sources/tips_and_tricks/the_clang.txt
|
|
226
225
|
- documentation/_build/html/_sources/tips_and_tricks/tips_and_tricks.txt
|
|
@@ -340,8 +339,8 @@ files:
|
|
|
340
339
|
- documentation/_build/html/_static/js/jquery-1.11.0.min.js
|
|
341
340
|
- documentation/_build/html/_static/js/jquery-fix.js
|
|
342
341
|
- documentation/_build/html/_static/keys.png
|
|
343
|
-
- documentation/_build/html/_static/logo_conformant_48.png
|
|
344
342
|
- documentation/_build/html/_static/logo_tiny_32.ico
|
|
343
|
+
- documentation/_build/html/_static/logo_tiny_48.png
|
|
345
344
|
- documentation/_build/html/_static/minus.png
|
|
346
345
|
- documentation/_build/html/_static/misra.png
|
|
347
346
|
- documentation/_build/html/_static/notepad.png
|
|
@@ -413,7 +412,6 @@ files:
|
|
|
413
412
|
- documentation/_build/html/tips_and_tricks/dot.html
|
|
414
413
|
- documentation/_build/html/tips_and_tricks/how_to_use_bake_with_cygwin.html
|
|
415
414
|
- documentation/_build/html/tips_and_tricks/qac.html
|
|
416
|
-
- documentation/_build/html/tips_and_tricks/static_code_analysis.html
|
|
417
415
|
- documentation/_build/html/tips_and_tricks/the_bakery.html
|
|
418
416
|
- documentation/_build/html/tips_and_tricks/the_clang.html
|
|
419
417
|
- documentation/_build/html/tips_and_tricks/tips_and_tricks.html
|
|
@@ -1,122 +0,0 @@
|
|
|
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
|
-
|
|
Binary file
|
|
@@ -1,285 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
5
|
-
<head>
|
|
6
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
7
|
-
|
|
8
|
-
<title>Static Code Analysis — bake documentation</title>
|
|
9
|
-
|
|
10
|
-
<link rel="stylesheet" href="../_static/basic.css" type="text/css" />
|
|
11
|
-
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
|
|
12
|
-
<link rel="stylesheet" href="../_static/bootswatch-3.3.4/sandstone/bootstrap.min.css" type="text/css" />
|
|
13
|
-
<link rel="stylesheet" href="../_static/bootstrap-sphinx.css" type="text/css" />
|
|
14
|
-
|
|
15
|
-
<script type="text/javascript">
|
|
16
|
-
var DOCUMENTATION_OPTIONS = {
|
|
17
|
-
URL_ROOT: '../',
|
|
18
|
-
VERSION: '',
|
|
19
|
-
COLLAPSE_INDEX: false,
|
|
20
|
-
FILE_SUFFIX: '.html',
|
|
21
|
-
HAS_SOURCE: true
|
|
22
|
-
};
|
|
23
|
-
</script>
|
|
24
|
-
<script type="text/javascript" src="../_static/jquery.js"></script>
|
|
25
|
-
<script type="text/javascript" src="../_static/underscore.js"></script>
|
|
26
|
-
<script type="text/javascript" src="../_static/doctools.js"></script>
|
|
27
|
-
<script type="text/javascript" src="../_static/js/jquery-1.11.0.min.js"></script>
|
|
28
|
-
<script type="text/javascript" src="../_static/js/jquery-fix.js"></script>
|
|
29
|
-
<script type="text/javascript" src="../_static/bootstrap-3.3.4/js/bootstrap.min.js"></script>
|
|
30
|
-
<script type="text/javascript" src="../_static/bootstrap-sphinx.js"></script>
|
|
31
|
-
<link rel="shortcut icon" href="../_static/logo_tiny_32.ico"/>
|
|
32
|
-
<link rel="top" title="bake documentation" href="../index.html" />
|
|
33
|
-
<link rel="up" title="Tips and Tricks" href="tips_and_tricks.html" />
|
|
34
|
-
<link rel="next" title="How to use bake with cygwin" href="how_to_use_bake_with_cygwin.html" />
|
|
35
|
-
<link rel="prev" title="The Bakery" href="the_bakery.html" />
|
|
36
|
-
<meta charset='utf-8'>
|
|
37
|
-
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
|
|
38
|
-
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1'>
|
|
39
|
-
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
40
|
-
|
|
41
|
-
</head>
|
|
42
|
-
<body role="document">
|
|
43
|
-
|
|
44
|
-
<div id="navbar" class="navbar navbar-default navbar-fixed-top">
|
|
45
|
-
<div class="container">
|
|
46
|
-
<div class="navbar-header">
|
|
47
|
-
<!-- .btn-navbar is used as the toggle for collapsed navbar content -->
|
|
48
|
-
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".nav-collapse">
|
|
49
|
-
<span class="icon-bar"></span>
|
|
50
|
-
<span class="icon-bar"></span>
|
|
51
|
-
<span class="icon-bar"></span>
|
|
52
|
-
</button>
|
|
53
|
-
<a class="navbar-brand" href="../index.html"><img src="../_static/logo_conformant_48.png">
|
|
54
|
-
</a>
|
|
55
|
-
<span class="navbar-text navbar-version pull-left"><b></b></span>
|
|
56
|
-
</div>
|
|
57
|
-
|
|
58
|
-
<div class="collapse navbar-collapse nav-collapse">
|
|
59
|
-
<ul class="nav navbar-nav">
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
<li class="dropdown globaltoc-container">
|
|
63
|
-
<a role="button"
|
|
64
|
-
id="dLabelGlobalToc"
|
|
65
|
-
data-toggle="dropdown"
|
|
66
|
-
data-target="#"
|
|
67
|
-
href="../index.html">Section <b class="caret"></b></a>
|
|
68
|
-
<ul class="dropdown-menu globaltoc"
|
|
69
|
-
role="menu"
|
|
70
|
-
aria-labelledby="dLabelGlobalToc"><ul class="current">
|
|
71
|
-
<li class="toctree-l1"><a class="reference internal" href="../why_bake/why_bake.html">Why you should use bake</a></li>
|
|
72
|
-
<li class="toctree-l1"><a class="reference internal" href="../install/install_bake.html">Install bake</a></li>
|
|
73
|
-
<li class="toctree-l1"><a class="reference internal" href="../quickstart/quickstart.html">Quickstart</a></li>
|
|
74
|
-
<li class="toctree-l1"><a class="reference internal" href="../concepts/concepts.html">Concepts</a></li>
|
|
75
|
-
<li class="toctree-l1"><a class="reference internal" href="../syntax/syntax.html">Syntax</a></li>
|
|
76
|
-
<li class="toctree-l1"><a class="reference internal" href="../commandline/commandline.html">Commandline</a></li>
|
|
77
|
-
<li class="toctree-l1"><a class="reference internal" href="../ide/ide_integrations.html">IDE Support</a></li>
|
|
78
|
-
<li class="toctree-l1 current"><a class="reference internal" href="tips_and_tricks.html">Tips and Tricks</a></li>
|
|
79
|
-
<li class="toctree-l1"><a class="reference internal" href="../performance/performance.html">Performance</a></li>
|
|
80
|
-
<li class="toctree-l1"><a class="reference internal" href="../known_issues.html">Known Issues</a></li>
|
|
81
|
-
<li class="toctree-l1"><a class="reference internal" href="../changelog.html">Changelog</a></li>
|
|
82
|
-
<li class="toctree-l1"><a class="reference internal" href="../license.html">License</a></li>
|
|
83
|
-
</ul>
|
|
84
|
-
<ul>
|
|
85
|
-
<li class="toctree-l1"><a class="reference internal" href="../internal.html">Internal developing notes</a></li>
|
|
86
|
-
</ul>
|
|
87
|
-
</ul>
|
|
88
|
-
</li>
|
|
89
|
-
|
|
90
|
-
<li class="dropdown">
|
|
91
|
-
<a role="button"
|
|
92
|
-
id="dLabelLocalToc"
|
|
93
|
-
data-toggle="dropdown"
|
|
94
|
-
data-target="#"
|
|
95
|
-
href="#">SubSections <b class="caret"></b></a>
|
|
96
|
-
<ul class="dropdown-menu localtoc"
|
|
97
|
-
role="menu"
|
|
98
|
-
aria-labelledby="dLabelLocalToc"><ul>
|
|
99
|
-
<li><a class="reference internal" href="#">Static Code Analysis</a><ul>
|
|
100
|
-
<li><a class="reference internal" href="#lint">Lint</a><ul>
|
|
101
|
-
<li><a class="reference internal" href="#basic-setup">Basic Setup</a><ul>
|
|
102
|
-
<li><a class="reference internal" href="#example">Example</a></li>
|
|
103
|
-
</ul>
|
|
104
|
-
</li>
|
|
105
|
-
<li><a class="reference internal" href="#configuring-lint">Configuring Lint</a><ul>
|
|
106
|
-
<li><a class="reference internal" href="#id2">Example</a></li>
|
|
107
|
-
</ul>
|
|
108
|
-
</li>
|
|
109
|
-
<li><a class="reference internal" href="#known-issues">Known Issues</a><ul>
|
|
110
|
-
<li><a class="reference internal" href="#bake-only-searches-for-lint-nt-exe">bake only searches for lint-nt.exe</a></li>
|
|
111
|
-
<li><a class="reference internal" href="#lint-fails-due-to-missing-compiler-includes-and-defines">Lint fails due to missing compiler includes and defines</a></li>
|
|
112
|
-
<li><a class="reference internal" href="#lint-error-due-to-too-many-includes">Lint error due to too many includes</a></li>
|
|
113
|
-
</ul>
|
|
114
|
-
</li>
|
|
115
|
-
</ul>
|
|
116
|
-
</li>
|
|
117
|
-
</ul>
|
|
118
|
-
</li>
|
|
119
|
-
</ul>
|
|
120
|
-
</ul>
|
|
121
|
-
</li>
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
<li>
|
|
128
|
-
<a href="the_bakery.html" title="Previous Chapter: The Bakery"><span class="glyphicon glyphicon-chevron-left visible-sm"></span><span class="hidden-sm hidden-tablet">« The Bakery</span>
|
|
129
|
-
</a>
|
|
130
|
-
</li>
|
|
131
|
-
<li>
|
|
132
|
-
<a href="how_to_use_bake_with_cygwin.html" title="Next Chapter: How to use bake with cygwin"><span class="glyphicon glyphicon-chevron-right visible-sm"></span><span class="hidden-sm hidden-tablet">How to use ba... »</span>
|
|
133
|
-
</a>
|
|
134
|
-
</li>
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
</ul>
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
<form class="navbar-form navbar-right" action="../search.html" method="get">
|
|
145
|
-
<div class="form-group">
|
|
146
|
-
<input type="text" name="q" class="form-control" placeholder="Search" />
|
|
147
|
-
</div>
|
|
148
|
-
<input type="hidden" name="check_keywords" value="yes" />
|
|
149
|
-
<input type="hidden" name="area" value="default" />
|
|
150
|
-
</form>
|
|
151
|
-
|
|
152
|
-
</div>
|
|
153
|
-
</div>
|
|
154
|
-
</div>
|
|
155
|
-
|
|
156
|
-
<div class="container">
|
|
157
|
-
<div class="row">
|
|
158
|
-
<div class="col-md-12">
|
|
159
|
-
|
|
160
|
-
<div class="section" id="static-code-analysis">
|
|
161
|
-
<h1>Static Code Analysis<a class="headerlink" href="#static-code-analysis" title="Permalink to this headline">¶</a></h1>
|
|
162
|
-
<p>Static code analysis often is part or a pre step of the build, even though bake provides presteps which can be used to
|
|
163
|
-
add customized steps, we choose to add explicit support for static code analysis due to the fact that the analysis often
|
|
164
|
-
depends on information well known by the build system (include pahts, compiler flags, etc.). Currently bake has built in
|
|
165
|
-
support for <em>Pc-Lint</em>.</p>
|
|
166
|
-
<div class="section" id="lint">
|
|
167
|
-
<h2>Lint<a class="headerlink" href="#lint" title="Permalink to this headline">¶</a></h2>
|
|
168
|
-
<p>With bake you can lint LibraryConfigs, ExecutableConfigs, single files and the complete workspace (in this case the projects are linted separately).
|
|
169
|
-
The CPP Toolchain settings of the project are used regardless of the file type and file specific options.
|
|
170
|
-
It is possible to specify lnt-files with LintPolicy, but you can add every other lint command line option as well.</p>
|
|
171
|
-
<div class="section" id="basic-setup">
|
|
172
|
-
<h3>Basic Setup<a class="headerlink" href="#basic-setup" title="Permalink to this headline">¶</a></h3>
|
|
173
|
-
<ol class="arabic simple">
|
|
174
|
-
<li>Install <a class="reference external" href="http://www.gimpel.com/html/products.htm">lint</a>.</li>
|
|
175
|
-
<li>Make sure the The lint executable ‘lint-nt.exe’ is in the path.</li>
|
|
176
|
-
</ol>
|
|
177
|
-
<div class="admonition attention">
|
|
178
|
-
<p class="first admonition-title">Attention</p>
|
|
179
|
-
<p class="last">even though there is a unix version of pc-lint the asscoated binary name must be lint-nt.exe otherwise
|
|
180
|
-
it won’t be recorgnized by the bake build system.</p>
|
|
181
|
-
</div>
|
|
182
|
-
<p>After doing this steps you are able to lint your build configurations (LibraryConfigs and ExecutableConfigs) using the <em>–lint</em> flag on the command line.</p>
|
|
183
|
-
<div class="section" id="example">
|
|
184
|
-
<h4>Example<a class="headerlink" href="#example" title="Permalink to this headline">¶</a></h4>
|
|
185
|
-
<div class="highlight-console"><div class="highlight"><pre><span class="gp">User@Host:~$</span> bake Debug -p MyLibraryProject --lint
|
|
186
|
-
</pre></div>
|
|
187
|
-
</div>
|
|
188
|
-
</div>
|
|
189
|
-
</div>
|
|
190
|
-
<div class="section" id="configuring-lint">
|
|
191
|
-
<h3>Configuring Lint<a class="headerlink" href="#configuring-lint" title="Permalink to this headline">¶</a></h3>
|
|
192
|
-
<p>In order to configure lint in the Project.meta file, just use the <em>LintPolicy</em> command, which forwards the supplied
|
|
193
|
-
the parameters to lint.</p>
|
|
194
|
-
<div class="highlight-text"><div class="highlight"><pre>DefaultToolchain GCC {
|
|
195
|
-
...
|
|
196
|
-
LintPolicy "$(ProjectDir)/lint/misra.lnt"
|
|
197
|
-
LintPolicy "$(ProjectDir)/lint/suppressions.lnt"
|
|
198
|
-
}
|
|
199
|
-
</pre></div>
|
|
200
|
-
</div>
|
|
201
|
-
<div class="section" id="id2">
|
|
202
|
-
<h4>Example<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h4>
|
|
203
|
-
<p>This example shows how to redirect the output to single xml files placed into the main project folder.</p>
|
|
204
|
-
<div class="highlight-text"><div class="highlight"><pre>DefaultToolchain GCC {
|
|
205
|
-
LintPolicy "-os($(MainProjectDir)/$(ProjectName)_$(ConfigName)_lintout.xml)"
|
|
206
|
-
LintPolicy "-v"
|
|
207
|
-
LintPolicy "+xml(doc)"
|
|
208
|
-
LintPolicy "-format=%f %l %t %n %m"
|
|
209
|
-
LintPolicy "-format_specific= "
|
|
210
|
-
LintPolicy "-pragma(message)"
|
|
211
|
-
...
|
|
212
|
-
}
|
|
213
|
-
</pre></div>
|
|
214
|
-
</div>
|
|
215
|
-
</div>
|
|
216
|
-
</div>
|
|
217
|
-
<div class="section" id="known-issues">
|
|
218
|
-
<h3>Known Issues<a class="headerlink" href="#known-issues" title="Permalink to this headline">¶</a></h3>
|
|
219
|
-
<div class="section" id="bake-only-searches-for-lint-nt-exe">
|
|
220
|
-
<h4>bake only searches for lint-nt.exe<a class="headerlink" href="#bake-only-searches-for-lint-nt-exe" title="Permalink to this headline">¶</a></h4>
|
|
221
|
-
<blockquote>
|
|
222
|
-
<div><p><strong>Issue:</strong>
|
|
223
|
-
bake currently does not search for all possible names of the lint application, it only searches for a file called <em>lint-nt.exe</em>.</p>
|
|
224
|
-
<p><strong>Solution:</strong>
|
|
225
|
-
If you have another lint command (e.g. because you are using flexe lint on unix)
|
|
226
|
-
just create an symlink/alias which is called <em>lint-nt.exe</em>.</p>
|
|
227
|
-
</div></blockquote>
|
|
228
|
-
</div>
|
|
229
|
-
<div class="section" id="lint-fails-due-to-missing-compiler-includes-and-defines">
|
|
230
|
-
<h4>Lint fails due to missing compiler includes and defines<a class="headerlink" href="#lint-fails-due-to-missing-compiler-includes-and-defines" title="Permalink to this headline">¶</a></h4>
|
|
231
|
-
<blockquote>
|
|
232
|
-
<div><p><strong>Issue:</strong>
|
|
233
|
-
Lint will fail if compiler internal includes and defines are missing.</p>
|
|
234
|
-
<p><strong>Solution:</strong></p>
|
|
235
|
-
<p>Lint comes with some helper files, handle this issue. In order to get a list of all needed
|
|
236
|
-
helper files e.g. for GCC, use the following command.</p>
|
|
237
|
-
<div class="highlight-console"><div class="highlight"><pre><span class="gp">User@Host:~$</span> make -f .../PcLint/../lnt/co-gcc.mak
|
|
238
|
-
</pre></div>
|
|
239
|
-
</div>
|
|
240
|
-
<p>You will get a output like this:</p>
|
|
241
|
-
<div class="highlight-text"><div class="highlight"><pre>gcc-include-path.lnt, lint_cmac.h, lint_cppmac.h and size-options.lnt.
|
|
242
|
-
</pre></div>
|
|
243
|
-
</div>
|
|
244
|
-
<p>You can now add the needed includes and LintPolicies (.lnt files) to your bake
|
|
245
|
-
configuration.</p>
|
|
246
|
-
</div></blockquote>
|
|
247
|
-
</div>
|
|
248
|
-
<div class="section" id="lint-error-due-to-too-many-includes">
|
|
249
|
-
<h4>Lint error due to too many includes<a class="headerlink" href="#lint-error-due-to-too-many-includes" title="Permalink to this headline">¶</a></h4>
|
|
250
|
-
<blockquote>
|
|
251
|
-
<div><p><strong>Issue:</strong>
|
|
252
|
-
In rare cases lint has problems if it has to open too many (include) files.</p>
|
|
253
|
-
<p><strong>Solution:</strong>
|
|
254
|
-
You can use the <em>–lint-max</em> and the <em>–lint-min</em> options to get around this issue.</p>
|
|
255
|
-
<p>Example:</p>
|
|
256
|
-
<div class="highlight-console"><div class="highlight"><pre><span class="gp">User@Host:~$</span> bake Debug -p MyLibraryProject --lint --lint-max <span class="m">50</span> <span class="c">#(lints the first 51 files)</span>
|
|
257
|
-
<span class="gp">User@Host:~$</span> bake Debug -p MyLibraryProject --lint --lint-min <span class="m">51</span> --lint-max <span class="m">100</span> <span class="c">#(lints the next 50 files)</span>
|
|
258
|
-
<span class="gp">User@Host:~$</span> bake Debug -p MyLibraryProject --lint --lint-min <span class="m">101</span> <span class="c">#(lints the rest of the files)</span>
|
|
259
|
-
</pre></div>
|
|
260
|
-
</div>
|
|
261
|
-
</div></blockquote>
|
|
262
|
-
</div>
|
|
263
|
-
</div>
|
|
264
|
-
</div>
|
|
265
|
-
</div>
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
</div>
|
|
269
|
-
|
|
270
|
-
</div>
|
|
271
|
-
</div>
|
|
272
|
-
<footer class="footer">
|
|
273
|
-
<div class="container">
|
|
274
|
-
<p class="pull-right">
|
|
275
|
-
<a href="#">Back to top</a>
|
|
276
|
-
|
|
277
|
-
</p>
|
|
278
|
-
<p>
|
|
279
|
-
© Copyright 2016, E.S.R.Labs AG.<br/>
|
|
280
|
-
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.3.1.<br/>
|
|
281
|
-
</p>
|
|
282
|
-
</div>
|
|
283
|
-
</footer>
|
|
284
|
-
</body>
|
|
285
|
-
</html>
|