/[eiffelstudio]/branches/eth/eve/Src/framework/code_analysis/ca_code_analyzer.e
ViewVC logotype

Diff of /branches/eth/eve/Src/framework/code_analysis/ca_code_analyzer.e

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 95251 by apaolo, Wed Jun 11 16:45:55 2014 UTC revision 95252 by jasonw, Fri Jun 13 08:20:35 2014 UTC
# Line 19  feature {NONE} -- Initialization Line 19  feature {NONE} -- Initialization
19    
20          make          make
21                          -- Initialization for `Current'.                          -- Initialization for `Current'.
22                    local
23                            l_rule_sorter: QUICK_SORTER [CA_RULE]
24                            l_rule_comparator: AGENT_EQUALITY_TESTER [CA_RULE]
25                  do                  do
26                          create settings.make                          create settings.make
27                          create rules.make                          create rules.make (80)
28                                  -- Adding the rules.                                  -- Adding the rules.
29                          rules.extend (create {CA_SELF_ASSIGNMENT_RULE}.make)                          rules.extend (create {CA_SELF_ASSIGNMENT_RULE}.make)
30                          rules.extend (create {CA_UNUSED_ARGUMENT_RULE}.make)                          rules.extend (create {CA_UNUSED_ARGUMENT_RULE}.make)
# Line 71  feature {NONE} -- Initialization Line 74  feature {NONE} -- Initialization
74                          rules.extend (create {CA_INSPECT_NO_WHEN_RULE}.make)                          rules.extend (create {CA_INSPECT_NO_WHEN_RULE}.make)
75                          rules.extend (create {CA_EXPLICIT_REDUNDANT_INHERITANCE_RULE}.make)                          rules.extend (create {CA_EXPLICIT_REDUNDANT_INHERITANCE_RULE}.make)
76    
77                                    -- Sort rules by ID.
78                            create l_rule_comparator.make (
79                                    agent (u, v: CA_RULE): BOOLEAN
80                                            do
81                                                    Result := u.id < v.id
82                                            end
83                            )
84                            create l_rule_sorter.make (l_rule_comparator)
85                            l_rule_sorter.sort (rules)
86    
87                          settings.initialize_rule_settings (rules)                          settings.initialize_rule_settings (rules)
88    
89                          create classes_to_analyze.make                          create classes_to_analyze.make
# Line 228  feature -- Analysis interface Line 241  feature -- Analysis interface
241                          end                          end
242                  end                  end
243    
244            force_enable_rules (a_rule_list: LIST [STRING_32])
245                    local
246                            l_sorter: QUICK_SORTER [READABLE_STRING_GENERAL]
247                    do
248                            create l_sorter.make (create {STRING_COMPARATOR}.make_caseless)
249                            l_sorter.sort (a_rule_list)
250    
251                                    -- Disable all rules.
252                            across rules as ic loop
253                                    ic.item.is_enabled.set_value (False)
254                            end
255    
256                                    -- The `rules' list is always ordered by ID.
257    
258                            from
259                                    a_rule_list.start
260                                    rules.start
261                            until
262                                    a_rule_list.after
263                            loop
264                                    if rules.after then
265                                            -- We have passed the end of the rules list and we still have some rules in the force-enabled list
266                                            -- which we haven't found.
267                                            output_actions.call ([ca_messages.rule_not_found (a_rule_list.item)])
268                                            a_rule_list.forth
269                                    elseif a_rule_list.item > rules.item.id then
270                                                    -- We haven't yet reached the current-rule-to-be-enabled
271                                            rules.item.is_enabled.set_value (False)
272                                            rules.forth
273                                    elseif a_rule_list.item ~ rules.item.id then
274                                                    -- Here we are!
275                                            rules.item.is_enabled.set_value (True)
276                                            rules.forth
277                                            a_rule_list.forth
278                                    else
279                                            check a_rule_list.item < rules.item.id then end
280                                                    -- We have passed the right location in the rule list without finding the specified rule.
281                                            output_actions.call ([ca_messages.rule_not_found (a_rule_list.item)])
282                                            a_rule_list.forth
283                                    end
284    
285                            end
286                    end
287    
288  feature -- Properties  feature -- Properties
289    
290          is_running: BOOLEAN          is_running: BOOLEAN
291                          -- Is code analysis running?                          -- Is code analysis running?
292    
293          rules: LINKED_LIST [CA_RULE]          rules: ARRAYED_LIST [CA_RULE]
294                          -- List of rules that will be used for analysis.                          -- List of rules that will be used for analysis. Rules are ordered by ID.
295    
296          rule_violations: detachable HASH_TABLE [SORTED_TWO_WAY_LIST [CA_RULE_VIOLATION], CLASS_C]          rule_violations: detachable HASH_TABLE [SORTED_TWO_WAY_LIST [CA_RULE_VIOLATION], CLASS_C]
297                          -- All found violations from the last analysis.                          -- All found violations from the last analysis.

Legend:
Removed from v.95251  
changed lines
  Added in v.95252

  ViewVC Help
Powered by ViewVC 1.1.23