lizard 1.17.22__tar.gz → 1.17.24__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. {lizard-1.17.22 → lizard-1.17.24}/PKG-INFO +19 -4
  2. {lizard-1.17.22 → lizard-1.17.24}/README.rst +18 -3
  3. {lizard-1.17.22 → lizard-1.17.24}/lizard.egg-info/PKG-INFO +19 -4
  4. {lizard-1.17.22 → lizard-1.17.24}/lizard.py +6 -2
  5. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/version.py +1 -1
  6. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/perl.py +15 -0
  7. {lizard-1.17.22 → lizard-1.17.24}/LICENSE.txt +0 -0
  8. {lizard-1.17.22 → lizard-1.17.24}/lizard.egg-info/SOURCES.txt +0 -0
  9. {lizard-1.17.22 → lizard-1.17.24}/lizard.egg-info/dependency_links.txt +0 -0
  10. {lizard-1.17.22 → lizard-1.17.24}/lizard.egg-info/entry_points.txt +0 -0
  11. {lizard-1.17.22 → lizard-1.17.24}/lizard.egg-info/requires.txt +0 -0
  12. {lizard-1.17.22 → lizard-1.17.24}/lizard.egg-info/top_level.txt +0 -0
  13. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/__init__.py +0 -0
  14. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/auto_open.py +0 -0
  15. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/csvoutput.py +0 -0
  16. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/default_ordered_dict.py +0 -0
  17. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/extension_base.py +0 -0
  18. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/htmloutput.py +0 -0
  19. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/keywords.py +0 -0
  20. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/lizardboolcount.py +0 -0
  21. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/lizardcomplextags.py +0 -0
  22. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/lizardcpre.py +0 -0
  23. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/lizarddependencycount.py +0 -0
  24. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/lizarddumpcomments.py +0 -0
  25. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/lizardduplicate.py +0 -0
  26. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/lizardduplicated_param_list.py +0 -0
  27. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/lizardexitcount.py +0 -0
  28. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/lizardgotocount.py +0 -0
  29. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/lizardignoreassert.py +0 -0
  30. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/lizardio.py +0 -0
  31. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/lizardmccabe.py +0 -0
  32. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/lizardmodified.py +0 -0
  33. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/lizardnd.py +0 -0
  34. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/lizardnonstrict.py +0 -0
  35. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/lizardns.py +0 -0
  36. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/lizardoutside.py +0 -0
  37. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/lizardstatementcount.py +0 -0
  38. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/lizardwordcount.py +0 -0
  39. {lizard-1.17.22 → lizard-1.17.24}/lizard_ext/xmloutput.py +0 -0
  40. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/__init__.py +0 -0
  41. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/clike.py +0 -0
  42. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/code_reader.py +0 -0
  43. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/csharp.py +0 -0
  44. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/erlang.py +0 -0
  45. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/fortran.py +0 -0
  46. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/gdscript.py +0 -0
  47. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/go.py +0 -0
  48. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/golike.py +0 -0
  49. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/java.py +0 -0
  50. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/javascript.py +0 -0
  51. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/js_style_language_states.py +0 -0
  52. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/js_style_regex_expression.py +0 -0
  53. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/jsx.py +0 -0
  54. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/kotlin.py +0 -0
  55. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/lua.py +0 -0
  56. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/objc.py +0 -0
  57. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/php.py +0 -0
  58. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/python.py +0 -0
  59. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/ruby.py +0 -0
  60. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/rubylike.py +0 -0
  61. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/rust.py +0 -0
  62. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/scala.py +0 -0
  63. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/script_language.py +0 -0
  64. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/solidity.py +0 -0
  65. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/swift.py +0 -0
  66. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/tnsdl.py +0 -0
  67. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/tsx.py +0 -0
  68. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/ttcn.py +0 -0
  69. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/typescript.py +0 -0
  70. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/vue.py +0 -0
  71. {lizard-1.17.22 → lizard-1.17.24}/lizard_languages/zig.py +0 -0
  72. {lizard-1.17.22 → lizard-1.17.24}/setup.cfg +0 -0
  73. {lizard-1.17.22 → lizard-1.17.24}/setup.py +0 -0
  74. {lizard-1.17.22 → lizard-1.17.24}/test/testApplication.py +0 -0
  75. {lizard-1.17.22 → lizard-1.17.24}/test/testAssertionExtension.py +0 -0
  76. {lizard-1.17.22 → lizard-1.17.24}/test/testBasicFunctionInfo.py +0 -0
  77. {lizard-1.17.22 → lizard-1.17.24}/test/testCOutsideComplexity.py +0 -0
  78. {lizard-1.17.22 → lizard-1.17.24}/test/testCPreprocessorExtension.py +0 -0
  79. {lizard-1.17.22 → lizard-1.17.24}/test/testCommentOptions.py +0 -0
  80. {lizard-1.17.22 → lizard-1.17.24}/test/testCyclomaticComplexity.py +0 -0
  81. {lizard-1.17.22 → lizard-1.17.24}/test/testExtension.py +0 -0
  82. {lizard-1.17.22 → lizard-1.17.24}/test/testFilesFilter.py +0 -0
  83. {lizard-1.17.22 → lizard-1.17.24}/test/testFunctionDependencyCount.py +0 -0
  84. {lizard-1.17.22 → lizard-1.17.24}/test/testFunctionExitCount.py +0 -0
  85. {lizard-1.17.22 → lizard-1.17.24}/test/testFunctionGotoCount.py +0 -0
  86. {lizard-1.17.22 → lizard-1.17.24}/test/testFunctionStatementCount.py +0 -0
  87. {lizard-1.17.22 → lizard-1.17.24}/test/testHelpers.py +0 -0
  88. {lizard-1.17.22 → lizard-1.17.24}/test/testLanguages.py +0 -0
  89. {lizard-1.17.22 → lizard-1.17.24}/test/testMcCabe.py +0 -0
  90. {lizard-1.17.22 → lizard-1.17.24}/test/testNestedStructures.py +0 -0
  91. {lizard-1.17.22 → lizard-1.17.24}/test/testNestingDepth.py +0 -0
  92. {lizard-1.17.22 → lizard-1.17.24}/test/testOutput.py +0 -0
  93. {lizard-1.17.22 → lizard-1.17.24}/test/testOutputCSV.py +0 -0
  94. {lizard-1.17.22 → lizard-1.17.24}/test/testOutputFile.py +0 -0
  95. {lizard-1.17.22 → lizard-1.17.24}/test/testOutputHTML.py +0 -0
  96. {lizard-1.17.22 → lizard-1.17.24}/test/testTokenizer.py +0 -0
  97. {lizard-1.17.22 → lizard-1.17.24}/test/test_analyzer.py +0 -0
  98. {lizard-1.17.22 → lizard-1.17.24}/test/test_auto_open.py +0 -0
  99. {lizard-1.17.22 → lizard-1.17.24}/test/test_options.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lizard
3
- Version: 1.17.22
3
+ Version: 1.17.24
4
4
  Summary: A code analyzer without caring the C/C++ header files. It works with Java, C/C++, JavaScript, Python, Ruby, Swift, Objective C. Metrics includes cyclomatic complexity number etc.
5
5
  Home-page: http://www.lizard.ws
6
6
  Download-URL: https://pypi.python.org/lizard/
@@ -334,13 +334,28 @@ Options in Comments
334
334
  -------------------
335
335
 
336
336
  You can use options in the comments of the source code to change the
337
- behavior of lizard. By putting "#lizard forgives" inside a function or
338
- before a function it will suppress the warning for that function.
337
+ behavior of lizard. There are two types of forgiveness comments:
338
+
339
+ 1. Function forgiveness: Put "#lizard forgives" inside a function or before a function to suppress warnings for that function.
339
340
 
340
341
  ::
341
342
 
342
343
  int foo() {
343
- // #lizard forgives the complexity
344
+ // #lizard forgives
345
+ ...
346
+ }
347
+
348
+ 2. Global code forgiveness: Put "#lizard forgive global" before global code to suppress warnings for all code outside of functions.
349
+
350
+ ::
351
+
352
+ // #lizard forgive global
353
+ int global_var = 0;
354
+ if (condition) { // This complexity won't be counted
355
+ ...
356
+ }
357
+
358
+ int foo() { // Functions are still counted normally
344
359
  ...
345
360
  }
346
361
 
@@ -303,13 +303,28 @@ Options in Comments
303
303
  -------------------
304
304
 
305
305
  You can use options in the comments of the source code to change the
306
- behavior of lizard. By putting "#lizard forgives" inside a function or
307
- before a function it will suppress the warning for that function.
306
+ behavior of lizard. There are two types of forgiveness comments:
307
+
308
+ 1. Function forgiveness: Put "#lizard forgives" inside a function or before a function to suppress warnings for that function.
308
309
 
309
310
  ::
310
311
 
311
312
  int foo() {
312
- // #lizard forgives the complexity
313
+ // #lizard forgives
314
+ ...
315
+ }
316
+
317
+ 2. Global code forgiveness: Put "#lizard forgive global" before global code to suppress warnings for all code outside of functions.
318
+
319
+ ::
320
+
321
+ // #lizard forgive global
322
+ int global_var = 0;
323
+ if (condition) { // This complexity won't be counted
324
+ ...
325
+ }
326
+
327
+ int foo() { // Functions are still counted normally
313
328
  ...
314
329
  }
315
330
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lizard
3
- Version: 1.17.22
3
+ Version: 1.17.24
4
4
  Summary: A code analyzer without caring the C/C++ header files. It works with Java, C/C++, JavaScript, Python, Ruby, Swift, Objective C. Metrics includes cyclomatic complexity number etc.
5
5
  Home-page: http://www.lizard.ws
6
6
  Download-URL: https://pypi.python.org/lizard/
@@ -334,13 +334,28 @@ Options in Comments
334
334
  -------------------
335
335
 
336
336
  You can use options in the comments of the source code to change the
337
- behavior of lizard. By putting "#lizard forgives" inside a function or
338
- before a function it will suppress the warning for that function.
337
+ behavior of lizard. There are two types of forgiveness comments:
338
+
339
+ 1. Function forgiveness: Put "#lizard forgives" inside a function or before a function to suppress warnings for that function.
339
340
 
340
341
  ::
341
342
 
342
343
  int foo() {
343
- // #lizard forgives the complexity
344
+ // #lizard forgives
345
+ ...
346
+ }
347
+
348
+ 2. Global code forgiveness: Put "#lizard forgive global" before global code to suppress warnings for all code outside of functions.
349
+
350
+ ::
351
+
352
+ // #lizard forgive global
353
+ int global_var = 0;
354
+ if (condition) { // This complexity won't be counted
355
+ ...
356
+ }
357
+
358
+ int foo() { // Functions are still counted normally
344
359
  ...
345
360
  }
346
361
 
@@ -418,6 +418,7 @@ class FileInfoBuilder(object):
418
418
  self.fileinfo = FileInformation(filename, 0)
419
419
  self.current_line = 0
420
420
  self.forgive = False
421
+ self.forgive_global = False
421
422
  self.newline = True
422
423
  self.global_pseudo_function = FunctionInfo('*global*', filename, 0)
423
424
  self.current_function = self.global_pseudo_function
@@ -481,7 +482,8 @@ class FileInfoBuilder(object):
481
482
 
482
483
  def end_of_function(self):
483
484
  if not self.forgive:
484
- self.fileinfo.function_list.append(self.current_function)
485
+ if self.current_function.name != '*global*' or not self.forgive_global:
486
+ self.fileinfo.function_list.append(self.current_function)
485
487
  self.forgive = False
486
488
  if self.stacked_functions:
487
489
  self.current_function = self.stacked_functions.pop()
@@ -501,7 +503,9 @@ def comment_counter(tokens, reader):
501
503
  if comment is not None:
502
504
  for _ in comment.splitlines()[1:]:
503
505
  yield '\n'
504
- if comment.strip().startswith("#lizard forgive"):
506
+ if comment.strip().startswith("#lizard forgive global"):
507
+ reader.context.forgive_global = True
508
+ elif comment.strip().startswith("#lizard forgive"):
505
509
  reader.context.forgive = True
506
510
  if "GENERATED CODE" in comment:
507
511
  return
@@ -3,4 +3,4 @@
3
3
  #
4
4
  # pylint: disable=missing-docstring,invalid-name
5
5
 
6
- version = "1.17.22"
6
+ version = "1.17.24"
@@ -174,6 +174,11 @@ class PerlStates(CodeStateMachine):
174
174
  # Empty function body
175
175
  self.context.end_of_function()
176
176
  self.next(self._state_global)
177
+ elif token == '(':
178
+ # Function with parameter prototype like "sub fetch($)"
179
+ # Save the current function name and look for closing paren
180
+ self.paren_count = 1
181
+ self.next(self._state_function_prototype)
177
182
  elif token == 'sub':
178
183
  # Handle anonymous subroutine like 'callback(sub { ... })'
179
184
  self.anonymous_count += 1
@@ -190,6 +195,16 @@ class PerlStates(CodeStateMachine):
190
195
  # Skip attribute name
191
196
  self.in_attribute = False
192
197
 
198
+ def _state_function_prototype(self, token):
199
+ # Handle parameter prototypes after function name: sub fetch($) { ... }
200
+ if token == ')':
201
+ self.paren_count -= 1
202
+ if self.paren_count == 0:
203
+ # Return to function declaration state to handle the opening brace
204
+ self.next(self._state_function_dec)
205
+ elif token == '(':
206
+ self.paren_count += 1
207
+
193
208
  def _state_anon_brace_search(self, token):
194
209
  if token == '{':
195
210
  self.brace_count = 1
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes