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

Diff of /branches/eth/eve/Src/framework/code_analysis/rule_checkers/ca_all_rules_checker.e

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

revision 93168 by zurfluhs, Thu Oct 24 19:43:13 2013 UTC revision 93173 by zurfluhs, Fri Oct 25 16:09:21 2013 UTC
# Line 42  create Line 42  create
42  feature {NONE} -- Initialization  feature {NONE} -- Initialization
43          make          make
44                  do                  do
45                          create rule_checkers.make  --                      create rule_checkers.make
46                          last_run_successful := False                          last_run_successful := False
47                          create last_result.make  --                      create last_result.make (100) -- TODO: check initial capacity
48    
49                            create_action_lists
50                    end
51    
52            create_action_lists
53                    do
54                            create access_id_pre_actions.make
55                            create access_id_post_actions.make
56                            create assign_pre_actions.make
57                            create assign_post_actions.make
58                            create body_pre_actions.make
59                            create body_post_actions.make
60                            create class_pre_actions.make
61                            create class_post_actions.make
62                            create feature_pre_actions.make
63                            create feature_post_actions.make
64                            create id_pre_actions.make
65                            create id_post_actions.make
66                  end                  end
67    
68  feature -- Options For Execution  feature -- Options For Execution
69    
70          add_rule_checker (a_rule_checker: CA_RULE_CHECKER)  --      add_rule_checker (a_rule_checker: CA_RULE_CHECKER)
71    --              do
72    --                      rule_checkers.extend (a_rule_checker)
73    --              end
74    
75    --      remove_all_rule_checkers
76    --              do
77    --                      rule_checkers.wipe_out
78    --              ensure
79    --                      rule_checkers.is_empty
80    --              end
81    
82    feature {CA_RULE}
83    
84            add_access_id_pre_action (a_action: PROCEDURE[ANY, TUPLE[ACCESS_ID_AS]])
85                    do
86                            access_id_pre_actions.extend (a_action)
87                    end
88    
89            add_access_id_post_action (a_action: PROCEDURE[ANY, TUPLE[ACCESS_ID_AS]])
90                  do                  do
91                          rule_checkers.extend (a_rule_checker)                          access_id_post_actions.extend (a_action)
92                  end                  end
93    
94          remove_all_rule_checkers          add_assign_pre_action (a_action: PROCEDURE[ANY, TUPLE[ASSIGN_AS]])
95                  do                  do
96                          rule_checkers.wipe_out                          assign_pre_actions.extend (a_action)
                 ensure  
                         rule_checkers.is_empty  
97                  end                  end
98    
99          clear_results          add_assign_post_action (a_action: PROCEDURE[ANY, TUPLE[ASSIGN_AS]])
100                  do                  do
101                          last_result.wipe_out                          assign_post_actions.extend (a_action)
102                  end                  end
103    
104            add_body_pre_action (a_action: PROCEDURE[ANY, TUPLE[BODY_AS]])
105                    do
106                            body_pre_actions.extend (a_action)
107                    end
108    
109            add_body_post_action (a_action: PROCEDURE[ANY, TUPLE[BODY_AS]])
110                    do
111                            body_post_actions.extend (a_action)
112                    end
113    
114            add_class_pre_action (a_action: PROCEDURE[ANY, TUPLE[CLASS_AS]])
115                    do
116                            class_pre_actions.extend (a_action)
117                    end
118    
119            add_class_post_action (a_action: PROCEDURE[ANY, TUPLE[CLASS_AS]])
120                    do
121                            class_post_actions.extend (a_action)
122                    end
123    
124            add_feature_pre_action (a_action: PROCEDURE[ANY, TUPLE[FEATURE_AS]])
125                    do
126                            feature_pre_actions.extend (a_action)
127                    end
128    
129            add_feature_post_action (a_action: PROCEDURE[ANY, TUPLE[FEATURE_AS]])
130                    do
131                            feature_post_actions.extend (a_action)
132                    end
133    
134            add_id_pre_action (a_action: PROCEDURE[ANY, TUPLE[ID_AS]])
135                    do
136                            id_pre_actions.extend (a_action)
137                    end
138    
139            add_id_post_action (a_action: PROCEDURE[ANY, TUPLE[ID_AS]])
140                    do
141                            id_post_actions.extend (a_action)
142                    end
143    
144    feature {NONE} -- Agent lists
145    
146            access_id_pre_actions, access_id_post_actions: LINKED_LIST[PROCEDURE[ANY, TUPLE[ACCESS_ID_AS]]]
147    
148            assign_pre_actions, assign_post_actions: LINKED_LIST[PROCEDURE[ANY, TUPLE[ASSIGN_AS]]]
149    
150            body_pre_actions, body_post_actions: LINKED_LIST[PROCEDURE[ANY, TUPLE[BODY_AS]]]
151    
152            class_pre_actions, class_post_actions: LINKED_LIST[PROCEDURE[ANY, TUPLE[CLASS_AS]]]
153    
154            feature_pre_actions, feature_post_actions: LINKED_LIST[PROCEDURE[ANY, TUPLE[FEATURE_AS]]]
155    
156            id_pre_actions, id_post_actions: LINKED_LIST[PROCEDURE[ANY, TUPLE[ID_AS]]]
157    
158  feature -- Execution Commands  feature -- Execution Commands
159    
160          run_on_class (a_class_to_check: CLASS_AS)          run_on_class (a_class_to_check: CLASS_C)
161                          -- Check all rules that have been added                          -- Check all rules that have been added
162                  require                  local
163                          rule_checkers_added: not rule_checkers.is_empty                          l_ast: CLASS_AS
164                  do                  do
165                          across rule_checkers as l_checkers loop  --                      across rule_checkers as l_checkers loop
166                                  l_checkers.item.clear_results  --                              l_checkers.item.clear_results
167                                  l_checkers.item.process_class (a_class_to_check)  --                              l_checkers.item.process_class (a_class_to_check)
168                          end  --                      end
169                            l_ast := a_class_to_check.ast
170                          process_class_as (a_class_to_check)                          across class_pre_actions as l_a loop l_a.item.call ([l_ast]) end
171                            process_class_as (l_ast)
172                          across rule_checkers as l_checkers loop                          across class_post_actions as l_a loop l_a.item.call ([l_ast]) end
173                                  across l_checkers.item.results as l_rule_results loop  --                      across rule_checkers as l_checkers loop
174                                          last_result.extend (l_rule_results.item)  --                              across l_checkers.item.results as l_rule_results loop
175                                  end  --                                      last_result.extend (l_rule_results.item)
176                          end  --                              end
177    --                      end
178                          last_run_successful := True                          last_run_successful := True
                 ensure  
                         last_run_successful implies last_result /= Void  
179                  end                  end
180    
181  feature {NONE} -- Processing  feature {NONE} -- Processing
182    
183          process_access_id_as (l_as: ACCESS_ID_AS)          process_access_id_as (l_as: ACCESS_ID_AS)
184                  do                  do
185                          across rule_checkers as l_checkers loop  --                      across rule_checkers as l_checkers loop
186                                  l_checkers.item.process_access_id (l_as)  --                              l_checkers.item.process_access_id (l_as)
187                          end  --                      end
188                            across access_id_pre_actions as l_a loop l_a.item.call ([l_as]) end
189    
190                          Precursor (l_as)                          Precursor (l_as)
191    
192                            across access_id_post_actions as l_a loop l_a.item.call ([l_as]) end
193                  end                  end
194    
195          process_assign_as (l_as: ASSIGN_AS)          process_assign_as (l_as: ASSIGN_AS)
196                  do                  do
197                          across rule_checkers as l_checkers loop  --                      across rule_checkers as l_checkers loop
198                                  l_checkers.item.process_assignment (l_as)  --                              l_checkers.item.process_assignment (l_as)
199                          end  --                      end
200                            across assign_pre_actions as l_a loop l_a.item.call ([l_as]) end
201    
202                          Precursor (l_as)                          Precursor (l_as)
203    
204                            across assign_post_actions as l_a loop l_a.item.call ([l_as]) end
205                  end                  end
206    
207          process_body_as (l_as: BODY_AS)          process_body_as (l_as: BODY_AS)
208                  do                  do
209                          across rule_checkers as l_checkers loop  --                      across rule_checkers as l_checkers loop
210                                  l_checkers.item.process_body (l_as)  --                              l_checkers.item.process_body (l_as)
211                          end  --                      end
212                            across body_pre_actions as l_a loop l_a.item.call ([l_as]) end
213    
214                          Precursor (l_as)                          Precursor (l_as)
215    
216                          across rule_checkers as l_checkers loop                          across body_post_actions as l_a loop l_a.item.call ([l_as]) end
217                                  l_checkers.item.process_body_end  --                      across rule_checkers as l_checkers loop
218                          end  --                              l_checkers.item.process_body_end
219    --                      end
220                  end                  end
221    
222          process_feature_as (l_as: FEATURE_AS)          process_feature_as (l_as: FEATURE_AS)
223                  do                  do
224                          across rule_checkers as l_checkers loop  --                      across rule_checkers as l_checkers loop
225                                  l_checkers.item.process_feature (l_as)  --                              l_checkers.item.process_feature (l_as)
226                          end  --                      end
227                            across feature_pre_actions as l_a loop l_a.item.call ([l_as]) end
228    
229                          Precursor (l_as)                          Precursor (l_as)
230    
231                            across feature_post_actions as l_a loop l_a.item.call ([l_as]) end
232                  end                  end
233    
234          process_id_as (l_as: ID_AS)          process_id_as (l_as: ID_AS)
235                  do                  do
236                          across rule_checkers as l_checkers loop  --                      across rule_checkers as l_checkers loop
237                                  l_checkers.item.process_id (l_as)  --                              l_checkers.item.process_id (l_as)
238                          end  --                      end
239                            across id_pre_actions as l_a loop l_a.item.call ([l_as]) end
240    
241                          Precursor (l_as)                          Precursor (l_as)
242    
243                            across id_post_actions as l_a loop l_a.item.call ([l_as]) end
244                  end                  end
245    
246  feature -- Results  feature -- Results
247    
248          last_run_successful: BOOLEAN          last_run_successful: BOOLEAN
249    
250          last_result: detachable LINKED_LIST[CA_RULE_VIOLATION]  --      last_result: HASH_TABLE[LINKED_LIST[CA_RULE_VIOLATION], CLASS_C]
251    
252  feature -- Rule Checkers  feature -- Rule Checkers
253    
254          rule_checkers: LINKED_LIST[CA_RULE_CHECKER]  --      rule_checkers: LINKED_LIST[CA_RULE_CHECKER]
255    
256  invariant  --invariant
257          rule_checkers_list_exists: rule_checkers /= Void  --      rule_checkers_list_exists: rule_checkers /= Void
258  end  end

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

  ViewVC Help
Powered by ViewVC 1.1.23