/[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 93896 by zurfluhs, Sun Jan 5 22:19:12 2014 UTC revision 93897 by zurfluhs, Mon Jan 6 13:10:42 2014 UTC
# Line 21  feature {NONE} -- Initialization Line 21  feature {NONE} -- Initialization
21                  do                  do
22                          create settings.make                          create settings.make
23                          create rules.make                          create rules.make
24                          -- Adding example rules                                  -- Adding example rules.
25                          rules.extend (create {CA_SELF_ASSIGNMENT_RULE}.make)                          rules.extend (create {CA_SELF_ASSIGNMENT_RULE}.make)
26                          rules.extend (create {CA_UNUSED_ARGUMENT_RULE}.make)                          rules.extend (create {CA_UNUSED_ARGUMENT_RULE}.make)
27                          rules.extend (create {CA_NPATH_RULE}.make (settings.preference_manager))                          rules.extend (create {CA_NPATH_RULE}.make (settings.preference_manager))
# Line 87  feature -- Analysis interface Line 87  feature -- Analysis interface
87                  do                  do
88                          is_running := True                          is_running := True
89                                  -- TODO: caching                                  -- TODO: caching
90                          rule_violations.wipe_out  --                      rule_violations.wipe_out
91    
92                          create l_rules_checker.make                          create l_rules_checker.make
93                          across rules as l_rules loop                          across rules as l_rules loop
94                                  l_rules.item.clear_violations                                  l_rules.item.clear_violations
95                                  if l_rules.item.is_enabled.value then -- important: only add enabled rules                                  if l_rules.item.is_enabled.value then -- Important: only add enabled rules.
96                                          if system_wide_check or else (not l_rules.item.is_system_wide) then                                          if system_wide_check or else (not l_rules.item.is_system_wide) then
97                                                          -- do not add system wide rules if we check only parts of the system                                                          -- Do not add system wide rules if we check only parts of the system.
98                                                  if attached {CA_STANDARD_RULE} l_rules.item as l_std_rule then                                                  if attached {CA_STANDARD_RULE} l_rules.item as l_std_rule then
99    
100                                                          l_std_rule.prepare_checking (l_rules_checker)                                                          l_std_rule.prepare_checking (l_rules_checker)
# Line 125  feature -- Analysis interface Line 125  feature -- Analysis interface
125                                  l_groups.after                                  l_groups.after
126                          loop                          loop
127                                  l_cluster ?= l_groups.item_for_iteration                                  l_cluster ?= l_groups.item_for_iteration
128                                          -- Only load top-level clusters, as they are loaded recursively afterwards                                          -- Only load top-level clusters, as the others will be loaded recursively afterwards.
129                                  if l_cluster /= Void and then l_cluster.parent_cluster = Void then                                  if l_cluster /= Void and then l_cluster.parent_cluster = Void then
130                                          add_cluster (l_cluster)                                          add_cluster (l_cluster)
131                                  end                                  end
# Line 183  feature -- Analysis interface Line 183  feature -- Analysis interface
183                          end                          end
184                  end                  end
185    
186          add_classes (a_classes: ITERABLE[CLASS_I])          add_classes (a_classes: ITERABLE [CLASS_I])
187                  do                  do
188                          system_wide_check := False                          system_wide_check := False
189    
# Line 215  feature -- Properties Line 215  feature -- Properties
215    
216          analysis_successful: BOOLEAN          analysis_successful: BOOLEAN
217    
218          rules: LINKED_LIST[CA_RULE]          rules: LINKED_LIST [CA_RULE]
219    
220          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]
221    
222          preferences: PREFERENCES          preferences: PREFERENCES
223                  do Result := settings.preferences end                  do Result := settings.preferences end
# Line 226  feature {NONE} -- Implementation Line 226  feature {NONE} -- Implementation
226    
227          analysis_completed          analysis_completed
228                  do                  do
229                          across classes_to_analyze as l_classes loop  --                      across classes_to_analyze as l_classes loop
230                                  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)
231                          end  --                      end
232    
233                          across rules as l_rules loop                          across rules as l_rules loop
234                                  across l_rules.item.violations as l_v loop                                  across l_rules.item.violations as l_v loop
235                                                  -- check the ignore list                                                  -- Check the ignore list.
236                                          if is_violation_valid (l_v.item) then                                          if is_violation_valid (l_v.item) then
237                                                            -- Make sure a list for this class exists in the hash table:
238                                                    rule_violations.put (create {SORTED_TWO_WAY_LIST [CA_RULE_VIOLATION]}.make, l_v.item.affected_class)
239                                                            -- Add the violation.
240                                                  rule_violations.at (l_v.item.affected_class).extend (l_v.item)                                                  rule_violations.at (l_v.item.affected_class).extend (l_v.item)
241                                          end                                          end
242                                  end                                  end
# Line 279  feature {NONE} -- Implementation Line 282  feature {NONE} -- Implementation
282          completed_actions: ACTION_SEQUENCE [TUPLE [BOOLEAN]]          completed_actions: ACTION_SEQUENCE [TUPLE [BOOLEAN]]
283    
284          frozen rota: detachable ROTA_S          frozen rota: detachable ROTA_S
285                          -- Access to rota service                          -- Accesses the rota service.
286                  local                  local
287                          l_service_consumer: SERVICE_CONSUMER [ROTA_S]                          l_service_consumer: SERVICE_CONSUMER [ROTA_S]
288                  do                  do

Legend:
Removed from v.93896  
changed lines
  Added in v.93897

  ViewVC Help
Powered by ViewVC 1.1.23