Jelajahi Sumber

procerrors option added

avkonst 12 tahun lalu
induk
melakukan
164ce566e5
19 mengubah file dengan 29 tambahan dan 151 penghapusan
  1. 13 6
      mainline/core/dir.py
  2. 2 5
      mainline/ext/std/code/cpp.py
  3. 3 6
      mainline/ext/std/code/cs.py
  4. 0 10
      mainline/tests/general/test_basic/test_export_format_export_nest_per_file_stdout.gold.txt
  5. 0 10
      mainline/tests/general/test_basic/test_export_format_export_nest_stdout.gold.txt
  6. 1 1
      mainline/tests/general/test_basic/test_export_format_export_python_stdout.gold.txt
  7. 0 12
      mainline/tests/general/test_basic/test_export_format_export_txt_stdout.gold.txt
  8. 0 6
      mainline/tests/general/test_basic/test_export_format_export_xml_stdout.gold.txt
  9. 6 3
      mainline/tests/general/test_basic/test_help_collect_default_stdout.gold.txt
  10. 1 1
      mainline/tests/general/test_basic/test_workflow_collect_default_stderr.gold.txt
  11. 1 1
      mainline/tests/general/test_basic/test_workflow_export_default_stderr.gold.txt
  12. 0 6
      mainline/tests/general/test_basic/test_workflow_export_default_stdout.gold.txt
  13. 0 10
      mainline/tests/general/test_basic/test_workflow_export_second_per_file_stdout.gold.txt
  14. 0 10
      mainline/tests/general/test_basic/test_workflow_export_second_stdout.gold.txt
  15. 1 1
      mainline/tests/general/test_basic/test_workflow_limit_default_stderr.gold.txt
  16. 1 1
      mainline/tests/general/test_basic/test_workflow_limit_second_warn_touched_stderr.gold.txt
  17. 0 6
      mainline/tests/general/test_std_code_cpp/test_parser_export_default_stdout.gold.txt
  18. 0 50
      mainline/tests/general/test_std_code_cpp/test_parser_export_files_stdout.gold.txt
  19. 0 6
      mainline/tests/general/test_std_code_cs/test_parser_export_default_stdout.gold.txt

+ 13 - 6
mainline/core/dir.py

@@ -36,18 +36,23 @@ class Plugin(core.api.Plugin, core.api.Parent, core.api.IConfigurable, core.api.
                          help="If the option is set (True), sub-directories are not processed [default: %default]")
         parser.add_option("--general.exclude-files", default=r'^[.]',
                          help="Defines the pattern to exclude files from processing [default: %default]")
-        parser.add_option("--general.proctime.on", action="store_true", default=False,
-                         help="If the option is set (True), the tool measures processing time per every file [default: %default]")
+        parser.add_option("--general.proctime-on", action="store_true", default=False,
+                         help="If the option is set (True), the tool measures processing time per file [default: %default]")
+        parser.add_option("--general.procerrors-on", action="store_true", default=False,
+                         help="If the option is set (True), the tool counts number of processing/parsing errors per file [default: %default]")
     
     def configure(self, options):
         self.non_recursively = options.__dict__['general.non_recursively']
         self.add_exclude_rule(re.compile(options.__dict__['general.exclude_files']))
-        self.is_proctime_enabled = options.__dict__['general.proctime.on']
+        self.is_proctime_enabled = options.__dict__['general.proctime_on']
+        self.is_procerrors_enabled = options.__dict__['general.procerrors_on']
 
     def initialize(self):
+        namespace = self.get_plugin_loader().get_database_loader().create_namespace('general')
         if self.is_proctime_enabled == True:
-            namespace = self.get_plugin_loader().get_database_loader().create_namespace('general')
-            namespace.add_field('proctime', self.measure_proctime_type)
+            namespace.add_field('proctime', float)
+        if self.is_procerrors_enabled == True:
+            namespace.add_field('procerrors', int)
         
     def run(self, args):
         if len(args) == 0:
@@ -91,9 +96,11 @@ class DirectoryReader():
                             checksum = binascii.crc32(text) & 0xffffffff # to match python 3
     
                             (data, is_updated) = plugin.get_plugin_loader().get_database_loader().create_file_data(full_path, checksum, text)
-                            parser.process(plugin, data, is_updated)
+                            procerrors = parser.process(plugin, data, is_updated)
                             if plugin.is_proctime_enabled == True:
                                 data.set_data('general', 'proctime', time.time() - ts)
+                            if plugin.is_procerrors_enabled == True and procerrors != None and procerrors != 0:
+                                data.set_data('general', 'procerrors', procerrors)
                             plugin.get_plugin_loader().get_database_loader().save_file_data(data)
                             logging.debug("-" * 60)
                 else:

+ 2 - 5
mainline/ext/std/code/cpp.py

@@ -44,16 +44,13 @@ class Plugin(core.api.Plugin, core.api.Parent, core.api.IParser, core.api.IConfi
         if prev_ext != ','.join(self.files):
             self.is_updated = True
         
-        namespace = self.get_plugin_loader().get_database_loader().create_namespace(self.get_name())
-        namespace.add_field('mismatched_brackets', int, non_zero=True)
-    
     def process(self, parent, data, is_updated):
         is_updated = is_updated or self.is_updated
+        count_mismatched_brackets = 0
         if is_updated == True:
             count_mismatched_brackets = CppCodeParser().run(data)
-            if count_mismatched_brackets != 0:
-                data.set_data(self.get_name(), 'mismatched_brackets', count_mismatched_brackets)
         self.notify_children(data, is_updated)
+        return count_mismatched_brackets
             
 class CppCodeParser(object):
     

+ 3 - 6
mainline/ext/std/code/cs.py

@@ -28,7 +28,7 @@ class Plugin(core.api.Plugin, core.api.Parent, core.api.IParser, core.api.IConfi
     
     def declare_configuration(self, parser):
         parser.add_option("--std.code.cs.files", default="*.cs",
-                         help="Enumerates filename extensions to match C/C++ files [default: %default]")
+                         help="Enumerates filename extensions to match C# files [default: %default]")
     
     def configure(self, options):
         self.files = options.__dict__['std.code.cs.files'].split(',')
@@ -44,16 +44,13 @@ class Plugin(core.api.Plugin, core.api.Parent, core.api.IParser, core.api.IConfi
         if prev_ext != ','.join(self.files):
             self.is_updated = True
         
-        namespace = self.get_plugin_loader().get_database_loader().create_namespace(self.get_name())
-        namespace.add_field('mismatched_brackets', int, non_zero=True)
-    
     def process(self, parent, data, is_updated):
         is_updated = is_updated or self.is_updated
+        count_mismatched_brackets = 0
         if is_updated == True:
             count_mismatched_brackets = CppCodeParser().run(data)
-            if count_mismatched_brackets != 0:
-                data.set_data(self.get_name(), 'mismatched_brackets', count_mismatched_brackets)
         self.notify_children(data, is_updated)
+        return count_mismatched_brackets
             
 class CppCodeParser(object):
     

+ 0 - 10
mainline/tests/general/test_basic/test_export_format_export_nest_per_file_stdout.gold.txt

@@ -96,16 +96,6 @@
                     <__diff__ max="0" total="2.0" avg="-0.166666666667" min="-1" />
                 </cyclomatic>
             </std.code.complexity>
-            <std.code.cpp>
-                <mismatched_brackets max="None" total="0.0" avg="None" min="None">
-                    <__diff__ max="0" total="0.0" avg="0" min="0" />
-                </mismatched_brackets>
-            </std.code.cpp>
-            <std.code.cs>
-                <mismatched_brackets max="None" total="0.0" avg="None" min="None">
-                    <__diff__ max="0" total="0.0" avg="0" min="0" />
-                </mismatched_brackets>
-            </std.code.cs>
         </aggregated-data>
     </data>
 </export>

+ 0 - 10
mainline/tests/general/test_basic/test_export_format_export_nest_stdout.gold.txt

@@ -14,16 +14,6 @@
                     <__diff__ max="0" total="5.0" avg="0.0714285714286" min="-1" />
                 </cyclomatic>
             </std.code.complexity>
-            <std.code.cpp>
-                <mismatched_brackets max="None" total="0.0" avg="None" min="None">
-                    <__diff__ max="0" total="0.0" avg="0" min="0" />
-                </mismatched_brackets>
-            </std.code.cpp>
-            <std.code.cs>
-                <mismatched_brackets max="None" total="0.0" avg="None" min="None">
-                    <__diff__ max="0" total="0.0" avg="0" min="0" />
-                </mismatched_brackets>
-            </std.code.cs>
         </aggregated-data>
     </data>
 </export>

+ 1 - 1
mainline/tests/general/test_basic/test_export_format_export_python_stdout.gold.txt

@@ -1 +1 @@
-{'export': [{'data: {'info': {'path': '', 'id': 1}, 'file-data': {}, 'subfiles': [], 'subdirs': [u'.'], 'aggregated-data': {'std.code.complexity': {'cyclomatic': {'total': 6.0, 'max': 3, 'avg': 1.5, 'min': 1}}, 'std.code.cpp': {'mismatched_brackets': {'total': 0.0, 'max': None, 'avg': None, 'min': None}}, 'std.code.cs': {'mismatched_brackets': {'total': 0.0, 'max': None, 'avg': None, 'min': None}}}}}]}
+{'export': [{'data: {'info': {'path': '', 'id': 1}, 'file-data': {}, 'subfiles': [], 'subdirs': [u'.'], 'aggregated-data': {'std.code.complexity': {'cyclomatic': {'total': 6.0, 'max': 3, 'avg': 1.5, 'min': 1}}}}}]}

+ 0 - 12
mainline/tests/general/test_basic/test_export_format_export_txt_stdout.gold.txt

@@ -18,18 +18,6 @@ data:
 .   .   .   .   total="6.0"
 .   .   .   .   avg="1.5"
 .   .   .   .   min="1"
-.   .   std.code.cpp:  
-.   .   .   mismatched_brackets: 
-.   .   .   .   max="None"
-.   .   .   .   total="0.0"
-.   .   .   .   avg="None"
-.   .   .   .   min="None"
-.   .   std.code.cs:  
-.   .   .   mismatched_brackets: 
-.   .   .   .   max="None"
-.   .   .   .   total="0.0"
-.   .   .   .   avg="None"
-.   .   .   .   min="None"
 ================================================================================
 
 

+ 0 - 6
mainline/tests/general/test_basic/test_export_format_export_xml_stdout.gold.txt

@@ -12,12 +12,6 @@
             <std.code.complexity>
                 <cyclomatic max="3" total="6.0" avg="1.5" min="1" />
             </std.code.complexity>
-            <std.code.cpp>
-                <mismatched_brackets max="None" total="0.0" avg="None" min="None" />
-            </std.code.cpp>
-            <std.code.cs>
-                <mismatched_brackets max="None" total="0.0" avg="None" min="None" />
-            </std.code.cs>
         </aggregated-data>
     </data>
 </export>

+ 6 - 3
mainline/tests/general/test_basic/test_help_collect_default_stdout.gold.txt

@@ -18,9 +18,12 @@ Options:
   --general.exclude-files=GENERAL.EXCLUDE_FILES
                         Defines the pattern to exclude files from processing
                         [default: ^[.]]
-  --general.proctime.on
+  --general.proctime-on
                         If the option is set (True), the tool measures
-                        processing time per every file [default: False]
+                        processing time per file [default: False]
+  --general.procerrors-on
+                        If the option is set (True), the tool counts number of
+                        processing/parsing errors per file [default: False]
   --general.log-level=GENERAL.LOG_LEVEL
                         Defines log level. Possible values are
                         'DEBUG','INFO','WARNING' or 'ERROR'. Default value is
@@ -34,5 +37,5 @@ Options:
                         Enumerates filename extensions to match C/C++ files
                         [default: *.c,*.h,*.cpp,*.hpp,*.cc,*.hh,*.cxx,*.hxx]
   --std.code.cs.files=STD.CODE.CS.FILES
-                        Enumerates filename extensions to match C/C++ files
+                        Enumerates filename extensions to match C# files
                         [default: *.cs]

+ 1 - 1
mainline/tests/general/test_basic/test_workflow_collect_default_stderr.gold.txt

@@ -2,4 +2,4 @@
 [LOG]: INFO:	Excluding: ./.unused.cpp
 [LOG]: INFO:	Skipping: ./dummy.txt
 [LOG]: INFO:	Processing: ./simple.cpp
-[LOG]: WARNING:	Exit code: 0. Time spent: 0.13 seconds. Done
+[LOG]: WARNING:	Exit code: 0. Time spent: 0.1 seconds. Done

+ 1 - 1
mainline/tests/general/test_basic/test_workflow_export_default_stderr.gold.txt

@@ -1,3 +1,3 @@
 [LOG]: WARNING:	Logging enabled with INFO level
 [LOG]: INFO:	Processing: 
-[LOG]: WARNING:	Exit code: 0. Time spent: 0.01 seconds. Done
+[LOG]: WARNING:	Exit code: 0. Time spent: 0.0 seconds. Done

+ 0 - 6
mainline/tests/general/test_basic/test_workflow_export_default_stdout.gold.txt

@@ -12,12 +12,6 @@
             <std.code.complexity>
                 <cyclomatic max="3" total="6.0" avg="1.5" min="1" />
             </std.code.complexity>
-            <std.code.cpp>
-                <mismatched_brackets max="None" total="0.0" avg="None" min="None" />
-            </std.code.cpp>
-            <std.code.cs>
-                <mismatched_brackets max="None" total="0.0" avg="None" min="None" />
-            </std.code.cs>
         </aggregated-data>
     </data>
 </export>

+ 0 - 10
mainline/tests/general/test_basic/test_workflow_export_second_per_file_stdout.gold.txt

@@ -76,16 +76,6 @@
                     <__diff__ max="0" total="2.0" avg="-0.166666666667" min="-1" />
                 </cyclomatic>
             </std.code.complexity>
-            <std.code.cpp>
-                <mismatched_brackets max="None" total="0.0" avg="None" min="None">
-                    <__diff__ max="0" total="0.0" avg="0" min="0" />
-                </mismatched_brackets>
-            </std.code.cpp>
-            <std.code.cs>
-                <mismatched_brackets max="None" total="0.0" avg="None" min="None">
-                    <__diff__ max="0" total="0.0" avg="0" min="0" />
-                </mismatched_brackets>
-            </std.code.cs>
         </aggregated-data>
     </data>
 </export>

+ 0 - 10
mainline/tests/general/test_basic/test_workflow_export_second_stdout.gold.txt

@@ -14,16 +14,6 @@
                     <__diff__ max="0" total="5.0" avg="0.0714285714286" min="-1" />
                 </cyclomatic>
             </std.code.complexity>
-            <std.code.cpp>
-                <mismatched_brackets max="None" total="0.0" avg="None" min="None">
-                    <__diff__ max="0" total="0.0" avg="0" min="0" />
-                </mismatched_brackets>
-            </std.code.cpp>
-            <std.code.cs>
-                <mismatched_brackets max="None" total="0.0" avg="None" min="None">
-                    <__diff__ max="0" total="0.0" avg="0" min="0" />
-                </mismatched_brackets>
-            </std.code.cs>
         </aggregated-data>
     </data>
 </export>

+ 1 - 1
mainline/tests/general/test_basic/test_workflow_limit_default_stderr.gold.txt

@@ -1,4 +1,4 @@
 [LOG]: WARNING:	Logging enabled with INFO level
 [LOG]: INFO:	Processing: 
 [LOG]: INFO:	Applying limit: namespace 'std.code.complexity', filter '('cyclomatic', '>', 0.0)'
-[LOG]: WARNING:	Exit code: 4. Time spent: 0.01 seconds. Done
+[LOG]: WARNING:	Exit code: 4. Time spent: 0.0 seconds. Done

+ 1 - 1
mainline/tests/general/test_basic/test_workflow_limit_second_warn_touched_stderr.gold.txt

@@ -2,4 +2,4 @@
 [LOG]: INFO:	Identifying changed files...
 [LOG]: INFO:	Processing: 
 [LOG]: INFO:	Applying limit: namespace 'std.code.complexity', filter '('cyclomatic', '>', 0.0)'
-[LOG]: WARNING:	Exit code: 4. Time spent: 0.01 seconds. Done
+[LOG]: WARNING:	Exit code: 4. Time spent: 0.02 seconds. Done

+ 0 - 6
mainline/tests/general/test_std_code_cpp/test_parser_export_default_stdout.gold.txt

@@ -12,12 +12,6 @@
             <std.code.complexity>
                 <cyclomatic max="2" total="15.0" avg="0.180722891566" min="0" />
             </std.code.complexity>
-            <std.code.cpp>
-                <mismatched_brackets max="3" total="3.0" avg="None" min="None" />
-            </std.code.cpp>
-            <std.code.cs>
-                <mismatched_brackets max="None" total="0.0" avg="None" min="None" />
-            </std.code.cs>
         </aggregated-data>
     </data>
 </export>

+ 0 - 50
mainline/tests/general/test_std_code_cpp/test_parser_export_files_stdout.gold.txt

@@ -714,18 +714,6 @@ data:
 .   .   .   .   total="4.0"
 .   .   .   .   avg="0.078431372549"
 .   .   .   .   min="0"
-.   .   std.code.cpp:  
-.   .   .   mismatched_brackets: 
-.   .   .   .   max="None"
-.   .   .   .   total="0.0"
-.   .   .   .   avg="None"
-.   .   .   .   min="None"
-.   .   std.code.cs:  
-.   .   .   mismatched_brackets: 
-.   .   .   .   max="None"
-.   .   .   .   total="0.0"
-.   .   .   .   avg="None"
-.   .   .   .   min="None"
 ================================================================================
 --------------------------------------------------------------------------------
 data:  
@@ -1132,18 +1120,6 @@ data:
 .   .   .   .   total="6.0"
 .   .   .   .   avg="0.25"
 .   .   .   .   min="0"
-.   .   std.code.cpp:  
-.   .   .   mismatched_brackets: 
-.   .   .   .   max="None"
-.   .   .   .   total="0.0"
-.   .   .   .   avg="None"
-.   .   .   .   min="None"
-.   .   std.code.cs:  
-.   .   .   mismatched_brackets: 
-.   .   .   .   max="None"
-.   .   .   .   total="0.0"
-.   .   .   .   avg="None"
-.   .   .   .   min="None"
 ================================================================================
 --------------------------------------------------------------------------------
 data:  
@@ -1246,18 +1222,6 @@ data:
 .   .   .   .   total="1.0"
 .   .   .   .   avg="0.25"
 .   .   .   .   min="0"
-.   .   std.code.cpp:  
-.   .   .   mismatched_brackets: 
-.   .   .   .   max="None"
-.   .   .   .   total="0.0"
-.   .   .   .   avg="None"
-.   .   .   .   min="None"
-.   .   std.code.cs:  
-.   .   .   mismatched_brackets: 
-.   .   .   .   max="None"
-.   .   .   .   total="0.0"
-.   .   .   .   avg="None"
-.   .   .   .   min="None"
 ================================================================================
 --------------------------------------------------------------------------------
 data:  
@@ -1373,8 +1337,6 @@ data:
 .   .   .   .   .   line_end="125"
 .   .   .   .   .   offset_begin="2768"
 .   .   .   .   data: 
-.   .   std.code.cpp: 
-.   .   .   mismatched_brackets="3"
 .   subfiles:
 .   subdirs:
 .   aggregated-data:  
@@ -1384,18 +1346,6 @@ data:
 .   .   .   .   total="4.0"
 .   .   .   .   avg="1.0"
 .   .   .   .   min="0"
-.   .   std.code.cpp:  
-.   .   .   mismatched_brackets: 
-.   .   .   .   max="3"
-.   .   .   .   total="3.0"
-.   .   .   .   avg="None"
-.   .   .   .   min="None"
-.   .   std.code.cs:  
-.   .   .   mismatched_brackets: 
-.   .   .   .   max="None"
-.   .   .   .   total="0.0"
-.   .   .   .   avg="None"
-.   .   .   .   min="None"
 ================================================================================
 
 

+ 0 - 6
mainline/tests/general/test_std_code_cs/test_parser_export_default_stdout.gold.txt

@@ -12,12 +12,6 @@
             <std.code.complexity>
                 <cyclomatic max="2" total="15.0" avg="0.180722891566" min="0" />
             </std.code.complexity>
-            <std.code.cpp>
-                <mismatched_brackets max="3" total="3.0" avg="None" min="None" />
-            </std.code.cpp>
-            <std.code.cs>
-                <mismatched_brackets max="None" total="0.0" avg="None" min="None" />
-            </std.code.cs>
         </aggregated-data>
     </data>
 </export>