adlint-postfilter 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,128 @@
1
+ # Filtering contents.
2
+ #
3
+ # Author:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
4
+ # Copyright:: Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
5
+ # License:: GPLv3+: GNU General Public License version 3 or later
6
+ #
7
+ # Owner:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
8
+
9
+ #--
10
+ # ___ ____ __ ___ _________
11
+ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer
12
+ # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint
13
+ # / __ |/ /_/ / /___/ / /| / / /
14
+ # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
15
+ #
16
+ # This file is part of adlint-postfilter.
17
+ #
18
+ # adlint-postfilter is free software: you can redistribute it and/or modify it
19
+ # under the terms of the GNU General Public License as published by the Free
20
+ # Software Foundation, either version 3 of the License, or (at your option) any
21
+ # later version.
22
+ #
23
+ # adlint-postfilter is distributed in the hope that it will be useful, but
24
+ # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
25
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
26
+ # more details.
27
+ #
28
+ # You should have received a copy of the GNU General Public License along with
29
+ # adlint-postfilter. If not, see <http://www.gnu.org/licenses/>.
30
+ #
31
+ #++
32
+
33
+ require "csv"
34
+ require "pathname"
35
+
36
+ module AdLint #:nodoc:
37
+ module Postfilter #:nodoc:
38
+
39
+ class FilteringContent < Array
40
+ def overwrite!
41
+ subclass_responsibility
42
+ end
43
+ end
44
+
45
+ class MessageFileContent < FilteringContent
46
+ def initialize(fpath)
47
+ @fpath = fpath
48
+ lines = File.read(fpath).lines.each_with_object([]) { |line, ary|
49
+ if line[0] == "V"
50
+ ary.push(OrdinaryLine.new(line.chomp))
51
+ else
52
+ ary.push(CsvMessageLine.new(line.chomp))
53
+ end
54
+ }
55
+ super(lines)
56
+ end
57
+
58
+ def overwrite!
59
+ File.open(@fpath, "w") { |io| io.puts self.compact }
60
+ end
61
+ end
62
+
63
+ class StderrContent < FilteringContent
64
+ def initialize(str)
65
+ lines = str.lines.each_with_object([]) { |line, ary|
66
+ if line =~ /:(?:warning|context):/
67
+ ary.push(PlainMessageLine.new(line.chomp))
68
+ else
69
+ ary.push(OrdinaryLine.new(line.chomp))
70
+ end
71
+ }
72
+ super(lines)
73
+ end
74
+
75
+ def overwrite!
76
+ $stderr.puts self.compact
77
+ end
78
+ end
79
+
80
+ class Line < String
81
+ def filterable?
82
+ subclass_responsibility
83
+ end
84
+ end
85
+
86
+ class OrdinaryLine < Line
87
+ def filterable?
88
+ false
89
+ end
90
+ end
91
+
92
+ class MessageLine < Line
93
+ def initialize(str, fpath_str, line_no_str, message_id_str)
94
+ super(str)
95
+
96
+ @fpath = Pathname.new(fpath_str).realpath
97
+ @line_no = line_no_str ? line_no_str.to_i : nil
98
+ @message_id = message_id_str.to_sym
99
+ end
100
+
101
+ attr_reader :fpath
102
+ attr_reader :line_no
103
+ attr_reader :message_id
104
+
105
+ def filterable?
106
+ true
107
+ end
108
+
109
+ def match_with?(suppression)
110
+ suppression._match_with?(self)
111
+ end
112
+ end
113
+
114
+ class CsvMessageLine < MessageLine
115
+ def initialize(str)
116
+ fields = CSV.parse(str).first
117
+ super(str, fields.fetch(1), fields.fetch(2), fields.fetch(4))
118
+ end
119
+ end
120
+
121
+ class PlainMessageLine < MessageLine
122
+ def initialize(str)
123
+ super(str, *str.scan(/\A(.*):(?:(\d*):\d*|):.*:(.*):/).first)
124
+ end
125
+ end
126
+
127
+ end
128
+ end
@@ -0,0 +1,76 @@
1
+ # Filtering drivers.
2
+ #
3
+ # Author:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
4
+ # Copyright:: Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
5
+ # License:: GPLv3+: GNU General Public License version 3 or later
6
+ #
7
+ # Owner:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
8
+
9
+ #--
10
+ # ___ ____ __ ___ _________
11
+ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer
12
+ # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint
13
+ # / __ |/ /_/ / /___/ / /| / / /
14
+ # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
15
+ #
16
+ # This file is part of adlint-postfilter.
17
+ #
18
+ # adlint-postfilter is free software: you can redistribute it and/or modify it
19
+ # under the terms of the GNU General Public License as published by the Free
20
+ # Software Foundation, either version 3 of the License, or (at your option) any
21
+ # later version.
22
+ #
23
+ # adlint-postfilter is distributed in the hope that it will be useful, but
24
+ # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
25
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
26
+ # more details.
27
+ #
28
+ # You should have received a copy of the GNU General Public License along with
29
+ # adlint-postfilter. If not, see <http://www.gnu.org/licenses/>.
30
+ #
31
+ #++
32
+
33
+ require "fileutils"
34
+
35
+ require "adlint/postfilter/command"
36
+
37
+ module AdLint #:nodoc:
38
+
39
+ module Postfilter
40
+ def install_config_template(config_fpath)
41
+ FileUtils.cp(File.expand_path("conf.d/adlint_postfilter.yml", $etcdir),
42
+ config_fpath)
43
+ end
44
+ module_function :install_config_template
45
+
46
+ def transform_makefile(makefile_fpath)
47
+ orig_fpath = makefile_fpath.add_ext(".orig")
48
+ FileUtils.mv(makefile_fpath, orig_fpath)
49
+
50
+ File.open(makefile_fpath, "w") do |dst_io|
51
+ dst_io.puts File.open(orig_fpath, "r") { |src_io|
52
+ src_io.each_line.map do |line|
53
+ case line
54
+ when /^(ADLINT =) (.*adlint)$/,
55
+ /^(ADLINT_SMA =) (.*adlint_sma)$/,
56
+ /^(ADLINT_CHK =) (.*adlint_chk)$/
57
+ "#{$1} adlint_flt -A #{$2}"
58
+ when /^(ADLINT_CMA =) (.*adlint_cma)$/
59
+ "#{$1} adlint_flt -V $(VPATH) -A #{$2}"
60
+ else
61
+ line.chomp
62
+ end
63
+ end
64
+ }
65
+ end
66
+ end
67
+ module_function :transform_makefile
68
+
69
+ def run(config_fpath, command_line, src_vpath)
70
+ command = AnalysisCommand.for(command_line, config_fpath, src_vpath)
71
+ command.execute.exitstatus
72
+ end
73
+ module_function :run
74
+ end
75
+
76
+ end
@@ -0,0 +1,52 @@
1
+ # Output filter.
2
+ #
3
+ # Author:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
4
+ # Copyright:: Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
5
+ # License:: GPLv3+: GNU General Public License version 3 or later
6
+ #
7
+ # Owner:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
8
+
9
+ #--
10
+ # ___ ____ __ ___ _________
11
+ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer
12
+ # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint
13
+ # / __ |/ /_/ / /___/ / /| / / /
14
+ # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
15
+ #
16
+ # This file is part of adlint-postfilter.
17
+ #
18
+ # adlint-postfilter is free software: you can redistribute it and/or modify it
19
+ # under the terms of the GNU General Public License as published by the Free
20
+ # Software Foundation, either version 3 of the License, or (at your option) any
21
+ # later version.
22
+ #
23
+ # adlint-postfilter is distributed in the hope that it will be useful, but
24
+ # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
25
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
26
+ # more details.
27
+ #
28
+ # You should have received a copy of the GNU General Public License along with
29
+ # adlint-postfilter. If not, see <http://www.gnu.org/licenses/>.
30
+ #
31
+ #++
32
+
33
+ require "adlint/postfilter/content"
34
+
35
+ module AdLint #:nodoc:
36
+ module Postfilter #:nodoc:
37
+
38
+ class MessageFilter
39
+ def initialize(config)
40
+ @config = config
41
+ @target_content = MessageFileContent.new(@config.msg_fpath)
42
+ end
43
+
44
+ def execute(stderr_content)
45
+ @config.suppression_list.apply_to(@target_content)
46
+ @target_content.overwrite!
47
+ @config.suppression_list.apply_to(stderr_content)
48
+ end
49
+ end
50
+
51
+ end
52
+ end
@@ -0,0 +1,68 @@
1
+ # Pathname creation utilities.
2
+ #
3
+ # Author:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
4
+ # Copyright:: Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
5
+ # License:: GPLv3+: GNU General Public License version 3 or later
6
+ #
7
+ # Owner:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
8
+
9
+ #--
10
+ # ___ ____ __ ___ _________
11
+ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer
12
+ # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint
13
+ # / __ |/ /_/ / /___/ / /| / / /
14
+ # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
15
+ #
16
+ # This file is part of adlint-postfilter.
17
+ #
18
+ # adlint-postfilter is free software: you can redistribute it and/or modify it
19
+ # under the terms of the GNU General Public License as published by the Free
20
+ # Software Foundation, either version 3 of the License, or (at your option) any
21
+ # later version.
22
+ #
23
+ # adlint-postfilter is distributed in the hope that it will be useful, but
24
+ # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
25
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
26
+ # more details.
27
+ #
28
+ # You should have received a copy of the GNU General Public License along with
29
+ # adlint-postfilter. If not, see <http://www.gnu.org/licenses/>.
30
+ #
31
+ #++
32
+
33
+ require "pathname"
34
+
35
+ module AdLint #:nodoc:
36
+ module Postfilter #:nodoc:
37
+
38
+ module PathUtil
39
+ def i_fpath_of(src_fpath, strip_num, output_dpath = nil)
40
+ if output_dpath
41
+ output_dpath.join(src_fpath.strip(strip_num)).sub_ext(".i")
42
+ else
43
+ src_fpath.strip(strip_num).sub_ext(".i")
44
+ end
45
+ end
46
+ module_function :i_fpath_of
47
+
48
+ def sma_msg_fpath_of(src_fpath, strip_num, output_dpath = nil)
49
+ if output_dpath
50
+ output_dpath.join(src_fpath.strip(strip_num)).add_ext(".msg.csv")
51
+ else
52
+ src_fpath.strip(strip_num).add_ext(".msg.csv")
53
+ end
54
+ end
55
+ module_function :sma_msg_fpath_of
56
+
57
+ def cma_msg_fpath_of(project_name, output_dpath = nil)
58
+ if output_dpath
59
+ output_dpath.join(Pathname.new(project_name)).add_ext(".msg.csv")
60
+ else
61
+ Pathname.new(project_name).add_ext(".msg.csv")
62
+ end
63
+ end
64
+ module_function :cma_msg_fpath_of
65
+ end
66
+
67
+ end
68
+ end
@@ -0,0 +1,202 @@
1
+ # Message suppression.
2
+ #
3
+ # Author:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
4
+ # Copyright:: Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
5
+ # License:: GPLv3+: GNU General Public License version 3 or later
6
+ #
7
+ # Owner:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
8
+
9
+ #--
10
+ # ___ ____ __ ___ _________
11
+ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer
12
+ # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint
13
+ # / __ |/ /_/ / /___/ / /| / / /
14
+ # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
15
+ #
16
+ # This file is part of adlint-postfilter.
17
+ #
18
+ # adlint-postfilter is free software: you can redistribute it and/or modify it
19
+ # under the terms of the GNU General Public License as published by the Free
20
+ # Software Foundation, either version 3 of the License, or (at your option) any
21
+ # later version.
22
+ #
23
+ # adlint-postfilter is distributed in the hope that it will be useful, but
24
+ # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
25
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
26
+ # more details.
27
+ #
28
+ # You should have received a copy of the GNU General Public License along with
29
+ # adlint-postfilter. If not, see <http://www.gnu.org/licenses/>.
30
+ #
31
+ #++
32
+
33
+ module AdLint #:nodoc:
34
+ module Postfilter #:nodoc:
35
+
36
+ class MessageSuppression
37
+ def _match_with?(message_line)
38
+ subclass_responsibility
39
+ end
40
+ end
41
+
42
+ class AdLintInitialHeaderSuppression < MessageSuppression
43
+ def initialize(cinit_fpath, pinit_fpath)
44
+ @cinit_fpath = cinit_fpath
45
+ @pinit_fpath = pinit_fpath
46
+ end
47
+
48
+ def _match_with?(message_line)
49
+ message_line.fpath == @cinit_fpath || message_line.fpath == @pinit_fpath
50
+ end
51
+ end
52
+
53
+ class PlatformHeaderSuppression < MessageSuppression
54
+ def initialize(project_root_dpath)
55
+ @project_root_dpath = project_root_dpath.realpath
56
+ end
57
+
58
+ def _match_with?(message_line)
59
+ !message_line.fpath.to_s.start_with?(@project_root_dpath.to_s)
60
+ end
61
+ end
62
+
63
+ class MessageWiseSuppression < MessageSuppression
64
+ def initialize(message_id)
65
+ @message_id = message_id
66
+ end
67
+
68
+ attr_reader :message_id
69
+
70
+ def _match_with?(message_line)
71
+ message_line.message_id == @message_id
72
+ end
73
+ end
74
+
75
+ class ProjectWideSuppression < MessageWiseSuppression; end
76
+
77
+ module Deactivatable
78
+ attr_writer :active
79
+
80
+ def active?
81
+ @active
82
+ end
83
+ end
84
+
85
+ class FileWiseSuppression < MessageWiseSuppression
86
+ include Deactivatable
87
+
88
+ def initialize(message_id, fpath, active)
89
+ super(message_id)
90
+ @fpath = fpath
91
+ self.active = active
92
+ end
93
+
94
+ attr_reader :fpath
95
+
96
+ def _match_with?(message_line)
97
+ if self.active?
98
+ super && message_line.fpath == @fpath
99
+ else
100
+ false
101
+ end
102
+ end
103
+ end
104
+
105
+ class LineWiseSuppression < MessageWiseSuppression
106
+ include Deactivatable
107
+
108
+ def initialize(message_id, fpath, line_no, active)
109
+ super(message_id)
110
+ @fpath, @line_no = fpath, line_no
111
+ self.active = active
112
+ end
113
+
114
+ attr_reader :fpath
115
+ attr_reader :line_no
116
+
117
+ def _match_with?(message_line)
118
+ if self.active?
119
+ super &&
120
+ message_line.fpath == @fpath && message_line.line_no == @line_no
121
+ else
122
+ false
123
+ end
124
+ end
125
+ end
126
+
127
+ class MessageSuppressionList
128
+ def initialize(initial_header_suppression, platform_header_suppression,
129
+ project_wide_suppressions,
130
+ tunit_wide_suppressions, line_wise_suppressions)
131
+ @initial_header_suppression = initial_header_suppression
132
+ @platform_header_suppression = platform_header_suppression
133
+ @p_index = create_p_index(project_wide_suppressions)
134
+ @t_index = create_t_index(tunit_wide_suppressions)
135
+ @l_index = create_l_index(line_wise_suppressions)
136
+ end
137
+
138
+ def apply_to(content)
139
+ content.each_with_index do |line, index|
140
+ if line.filterable?
141
+ supps = suppressions_for(line.message_id, line.fpath, line.line_no)
142
+ if supps.any? { |supp| line.match_with?(supp) }
143
+ content[index] = nil
144
+ end
145
+ end
146
+ end
147
+ end
148
+
149
+ private
150
+ def suppressions_for(message_id, fpath, line_no)
151
+ p_hash = select_project_wide_suppressions(message_id)
152
+ t_hash = select_tunit_wide_suppressions(message_id, fpath)
153
+ l_hash = select_line_wise_suppressions(message_id, fpath, line_no)
154
+ [@initial_header_suppression, @platform_header_suppression] +
155
+ p_hash.merge(t_hash).merge(l_hash).values
156
+ end
157
+
158
+ def select_project_wide_suppressions(message_id)
159
+ (supp = @p_index[message_id]) ? {message_id => supp} : {}
160
+ end
161
+
162
+ def select_tunit_wide_suppressions(message_id, fpath)
163
+ (supp = @t_index[message_id][fpath]) ? {message_id => supp} : {}
164
+ end
165
+
166
+ def select_line_wise_suppressions(message_id, fpath, line_no)
167
+ @l_index[message_id][fpath].each_with_object({}) do |supp, result|
168
+ if supp.line_no == line_no
169
+ result[supp.message_id] = supp
170
+ end
171
+ end
172
+ end
173
+
174
+ def create_p_index(suppressions)
175
+ suppressions.each_with_object({}) do |supp, index|
176
+ index[supp.message_id] = supp
177
+ end
178
+ end
179
+
180
+ def create_t_index(suppressions)
181
+ index = Hash.new { |mesg_id_hash, mesg_id| mesg_id_hash[mesg_id] = {} }
182
+ suppressions.each do |supp|
183
+ index[supp.message_id][supp.fpath] = supp
184
+ end
185
+ index
186
+ end
187
+
188
+ def create_l_index(suppressions)
189
+ index = Hash.new { |mesg_id_hash, mesg_id|
190
+ mesg_id_hash[mesg_id] = Hash.new { |fpath_hash, fpath|
191
+ fpath_hash[fpath] = []
192
+ }
193
+ }
194
+ suppressions.each do |supp|
195
+ index[supp.message_id][supp.fpath].push(supp)
196
+ end
197
+ index
198
+ end
199
+ end
200
+
201
+ end
202
+ end
@@ -0,0 +1,73 @@
1
+ # Version information.
2
+ #
3
+ # Author:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
4
+ # Copyright:: Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
5
+ # License:: GPLv3+: GNU General Public License version 3 or later
6
+ #
7
+ # Owner:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
8
+
9
+ #--
10
+ # ___ ____ __ ___ _________
11
+ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer
12
+ # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint
13
+ # / __ |/ /_/ / /___/ / /| / / /
14
+ # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
15
+ #
16
+ # This file is part of adlint-postfilter.
17
+ #
18
+ # adlint-postfilter is free software: you can redistribute it and/or modify it
19
+ # under the terms of the GNU General Public License as published by the Free
20
+ # Software Foundation, either version 3 of the License, or (at your option) any
21
+ # later version.
22
+ #
23
+ # adlint-postfilter is distributed in the hope that it will be useful, but
24
+ # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
25
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
26
+ # more details.
27
+ #
28
+ # You should have received a copy of the GNU General Public License along with
29
+ # adlint-postfilter. If not, see <http://www.gnu.org/licenses/>.
30
+ #
31
+ #++
32
+
33
+ module AdLint #:nodoc:
34
+ module Postfilter #:nodoc:
35
+
36
+ MAJOR_VERSION = 0
37
+ MINOR_VERSION = 9
38
+ PATCH_VERSION = 1
39
+ RELEASE_DATE = "2012-04-17"
40
+
41
+ SHORT_VERSION = "#{MAJOR_VERSION}.#{MINOR_VERSION}.#{PATCH_VERSION}"
42
+
43
+ VERSION = "#{SHORT_VERSION} (#{RELEASE_DATE})"
44
+
45
+ COPYRIGHT = <<EOS
46
+ ___ ____ __ ___ _________
47
+ / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer
48
+ / /| | / / / / / / / |/ / / / AdLint - Advanced Lint
49
+ / __ |/ /_/ / /___/ / /| / / /
50
+ /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
51
+
52
+ adlint-postfilter is free software: you can redistribute it and/or modify it
53
+ under the terms of the GNU General Public License as published by the Free
54
+ Software Foundation, either version 3 of the License, or (at your option) any
55
+ later version.
56
+
57
+ adlint-postfilter is distributed in the hope that it will be useful, but
58
+ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
59
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
60
+ details.
61
+
62
+ You should have received a copy of the GNU General Public License along with
63
+ adlint-postfilter. If not, see <http://www.gnu.org/licenses/>.
64
+
65
+ EOS
66
+
67
+ AUTHOR = <<EOS
68
+ Written by Yutaka Yanoh and OGIS-RI Co.,Ltd.
69
+
70
+ EOS
71
+
72
+ end
73
+ end
@@ -0,0 +1,43 @@
1
+ # adlint-postfilter package loader.
2
+ #
3
+ # Author:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
4
+ # Copyright:: Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
5
+ # License:: GPLv3+: GNU General Public License version 3 or later
6
+ #
7
+ # Owner:: Yutaka Yanoh <mailto:yanoh@users.sourceforge.net>
8
+
9
+ #--
10
+ # ___ ____ __ ___ _________
11
+ # / | / _ |/ / / / | / /__ __/ Source Code Static Analyzer
12
+ # / /| | / / / / / / / |/ / / / AdLint - Advanced Lint
13
+ # / __ |/ /_/ / /___/ / /| / / /
14
+ # /_/ |_|_____/_____/_/_/ |_/ /_/ Copyright (C) 2010-2012, OGIS-RI Co.,Ltd.
15
+ #
16
+ # This file is part of adlint-postfilter.
17
+ #
18
+ # adlint-postfilter is free software: you can redistribute it and/or modify it
19
+ # under the terms of the GNU General Public License as published by the Free
20
+ # Software Foundation, either version 3 of the License, or (at your option) any
21
+ # later version.
22
+ #
23
+ # adlint-postfilter is distributed in the hope that it will be useful, but
24
+ # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
25
+ # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
26
+ # more details.
27
+ #
28
+ # You should have received a copy of the GNU General Public License along with
29
+ # adlint-postfilter. If not, see <http://www.gnu.org/licenses/>.
30
+ #
31
+ #++
32
+
33
+ require "adlint"
34
+
35
+ require "adlint/postfilter/annotate"
36
+ require "adlint/postfilter/command"
37
+ require "adlint/postfilter/config"
38
+ require "adlint/postfilter/content"
39
+ require "adlint/postfilter/driver"
40
+ require "adlint/postfilter/filter"
41
+ require "adlint/postfilter/path"
42
+ require "adlint/postfilter/suppress"
43
+ require "adlint/postfilter/version"