/[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 93173 by zurfluhs, Fri Oct 25 16:09:21 2013 UTC revision 93177 by zurfluhs, Mon Oct 28 22:16:38 2013 UTC
# Line 37  feature -- Analysis interface Line 37  feature -- Analysis interface
37                          create l_rules_checker.make                          create l_rules_checker.make
38                          across rules as l_rules loop                          across rules as l_rules loop
39                                  if l_rules.item.is_enabled then -- important: only add enabled rules                                  if l_rules.item.is_enabled then -- important: only add enabled rules
40                                          l_rules.item.prepare_checking (l_rules_checker)                                          if system_wide_check or else (not l_rules.item.is_system_wide) then
41                                                    -- do not add system wide rules if we check only parts of the system
42                                                    l_rules.item.prepare_checking (l_rules_checker)
43                                            end
44                                  end                                  end
45                          end                          end
46    
47                          across classes_to_analyze as l_classes loop                          across classes_to_analyze as l_classes loop
48    
49                                    -- TODO: more elegant and performant solution?
50                                    across rules as l_rules loop
51                                            l_rules.item.set_checking_class (l_classes.item)
52                                    end
53    
54                                  l_rules_checker.run_on_class (l_classes.item)                                  l_rules_checker.run_on_class (l_classes.item)
55    
56                                  rule_violations.extend (create {SORTED_TWO_WAY_LIST[CA_RULE_VIOLATION]}.make, l_classes.item)                                  rule_violations.extend (create {SORTED_TWO_WAY_LIST[CA_RULE_VIOLATION]}.make, l_classes.item)
57                            end
58    
59                                  -- TODO: perhaps replace by more elegant and performant solution                          across rules as l_rules loop
60                                  across rules as l_rules loop                                  across l_rules.item.violations as l_v loop
61                                          across l_rules.item.violations as l_v loop                                          rule_violations.at (l_v.item.affected_class).extend (l_v.item)
                                                 rule_violations.at (l_classes.item).extend (l_v.item)  
                                         end  
                                         l_rules.item.violations.wipe_out  
62                                  end                                  end
63                          end                          end
64    
 --                      analysis_successful := l_rules_checker.last_run_successful  
 --                      if analysis_successful then  
 --                              rule_violations := l_rules_checker.last_result  
 --                      end  
   
65                          clear_classes_to_analyze                          clear_classes_to_analyze
66                  ensure                  ensure
67                          violation_list_exists: analysis_successful implies rule_violations /= Void                          violation_list_exists: analysis_successful implies rule_violations /= Void
# Line 88  feature -- Analysis interface Line 90  feature -- Analysis interface
90                                  end                                  end
91                                  l_groups.forth                                  l_groups.forth
92                          end                          end
93    
94                            system_wide_check := True
95                  end                  end
96    
97          add_cluster (a_cluster: CLUSTER_I)          add_cluster (a_cluster: CLUSTER_I)
# Line 95  feature -- Analysis interface Line 99  feature -- Analysis interface
99                          l_conf_class: CONF_CLASS                          l_conf_class: CONF_CLASS
100                          l_class_i: CLASS_I                          l_class_i: CLASS_I
101                  do                  do
102                            system_wide_check := False
103    
104                          from                          from
105                                  a_cluster.classes.start                                  a_cluster.classes.start
106                          until                          until
# Line 119  feature -- Analysis interface Line 125  feature -- Analysis interface
125    
126          add_classes (a_classes: ITERABLE[CLASS_I])          add_classes (a_classes: ITERABLE[CLASS_I])
127                  do                  do
128                            system_wide_check := False
129    
130                          across a_classes as l_classes loop                          across a_classes as l_classes loop
131                                  add_class (l_classes.item)                                  add_class (l_classes.item)
132                          end                          end
# Line 128  feature -- Analysis interface Line 136  feature -- Analysis interface
136                  local                  local
137                          l_class_c: CLASS_C                          l_class_c: CLASS_C
138                  do                  do
139                            system_wide_check := False
140    
141                          if a_class.is_compiled then                          if a_class.is_compiled then
142                                  l_class_c := a_class.compiled_class                                  l_class_c := a_class.compiled_class
143                                  check l_class_c /= Void end                                  check l_class_c /= Void end
# Line 150  feature {NONE} -- Implementation Line 160  feature {NONE} -- Implementation
160    
161          settings: CA_SETTINGS          settings: CA_SETTINGS
162    
 --      analyze_class_if_compiled (a_class: CLASS_I)  
 --              local  
 --                      l_class_c: CLASS_C  
 --              do  
 --                      if a_class.is_compiled then  
 --                              l_class_c := a_class.compiled_class  
 --                              check l_class_c /= Void end  
 --                              print ("Analyzing class " + a_class.name + "...%N")  
 --                              rules_checker.run_on_class (l_class_c.ast)  
 --                      else  
 --                              print ("Class " + a_class.name + " not compiled (skipped).%N")  
 --                      end  
 --              end  
   
163          classes_to_analyze: LINKED_SET[CLASS_C]          classes_to_analyze: LINKED_SET[CLASS_C]
164    
165            system_wide_check: BOOLEAN
166    
167  end  end

Legend:
Removed from v.93173  
changed lines
  Added in v.93177

  ViewVC Help
Powered by ViewVC 1.1.23