sflkit 0.2.8__tar.gz → 0.2.9__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 (59) hide show
  1. {sflkit-0.2.8/src/SFLKit.egg-info → sflkit-0.2.9}/PKG-INFO +1 -1
  2. {sflkit-0.2.8 → sflkit-0.2.9}/pyproject.toml +4 -1
  3. {sflkit-0.2.8 → sflkit-0.2.9/src/SFLKit.egg-info}/PKG-INFO +1 -1
  4. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/__init__.py +1 -1
  5. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/python/factory.py +3 -1
  6. {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_suggestions.py +23 -1
  7. {sflkit-0.2.8 → sflkit-0.2.9}/LICENSE +0 -0
  8. {sflkit-0.2.8 → sflkit-0.2.9}/README.md +0 -0
  9. {sflkit-0.2.8 → sflkit-0.2.9}/setup.cfg +0 -0
  10. {sflkit-0.2.8 → sflkit-0.2.9}/setup.py +0 -0
  11. {sflkit-0.2.8 → sflkit-0.2.9}/src/SFLKit.egg-info/SOURCES.txt +0 -0
  12. {sflkit-0.2.8 → sflkit-0.2.9}/src/SFLKit.egg-info/dependency_links.txt +0 -0
  13. {sflkit-0.2.8 → sflkit-0.2.9}/src/SFLKit.egg-info/entry_points.txt +0 -0
  14. {sflkit-0.2.8 → sflkit-0.2.9}/src/SFLKit.egg-info/requires.txt +0 -0
  15. {sflkit-0.2.8 → sflkit-0.2.9}/src/SFLKit.egg-info/top_level.txt +0 -0
  16. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/analysis/__init__.py +0 -0
  17. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/analysis/analysis_type.py +0 -0
  18. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/analysis/analyzer.py +0 -0
  19. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/analysis/factory.py +0 -0
  20. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/analysis/mapping.py +0 -0
  21. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/analysis/predicate.py +0 -0
  22. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/analysis/similarity.py +0 -0
  23. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/analysis/spectra.py +0 -0
  24. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/analysis/suggestion.py +0 -0
  25. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/cli.py +0 -0
  26. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/color.py +0 -0
  27. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/config.py +0 -0
  28. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/instrumentation/__init__.py +0 -0
  29. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/instrumentation/dir_instrumentation.py +0 -0
  30. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/instrumentation/file_instrumentation.py +0 -0
  31. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/__init__.py +0 -0
  32. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/extract.py +0 -0
  33. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/finder.py +0 -0
  34. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/language.py +0 -0
  35. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/meta.py +0 -0
  36. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/python/__init__.py +0 -0
  37. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/python/extract.py +0 -0
  38. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/python/finder.py +0 -0
  39. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/python/visitor.py +0 -0
  40. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/visitor.py +0 -0
  41. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/model/__init__.py +0 -0
  42. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/model/event_file.py +0 -0
  43. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/model/model.py +0 -0
  44. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/model/scope.py +0 -0
  45. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/runners/__init__.py +0 -0
  46. {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/runners/run.py +0 -0
  47. {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_analysis_objects.py +0 -0
  48. {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_cli.py +0 -0
  49. {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_color.py +0 -0
  50. {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_config.py +0 -0
  51. {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_events.py +0 -0
  52. {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_execution.py +0 -0
  53. {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_instrumentation.py +0 -0
  54. {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_language.py +0 -0
  55. {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_predicates.py +0 -0
  56. {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_runner.py +0 -0
  57. {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_scope.py +0 -0
  58. {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_spectra.py +0 -0
  59. {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_visitors.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sflkit
3
- Version: 0.2.8
3
+ Version: 0.2.9
4
4
  Summary: SFLKit: : A Workbench for Statistical Fault Localization
5
5
  Home-page: https://github.com/uds-se/sflkit
6
6
  Author: Marius Smytzek & Andreas Zeller
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
7
7
 
8
8
  [project]
9
9
  name = "sflkit"
10
- version = "0.2.8"
10
+ version = "0.2.9"
11
11
  authors = [
12
12
  { name = "Marius Smytzek", email = "marius.smytzek@cispa.de" },
13
13
  ]
@@ -27,6 +27,9 @@ classifiers = [
27
27
  "Homepage" = "https://github.com/uds-se/sflkit/"
28
28
  "Bug Tracker" = "https://github.com/uds-se/sflkit/issues"
29
29
 
30
+ [project.scripts]
31
+ sflkit = "sflkit.cli:main"
32
+
30
33
  [tool.black]
31
34
  line-length = 88
32
35
  target-version = ['py310']
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sflkit
3
- Version: 0.2.8
3
+ Version: 0.2.9
4
4
  Summary: SFLKit: : A Workbench for Statistical Fault Localization
5
5
  Home-page: https://github.com/uds-se/sflkit
6
6
  Author: Marius Smytzek & Andreas Zeller
@@ -6,7 +6,7 @@ from sflkit.analysis.predicate import Predicate
6
6
  from sflkit.config import Config, parse_config
7
7
  from sflkit.instrumentation.dir_instrumentation import DirInstrumentation
8
8
 
9
- __version__ = "0.2.8"
9
+ __version__ = "0.2.9"
10
10
 
11
11
 
12
12
  def instrument_config(conf: Config, event_dump: str = None):
@@ -839,7 +839,9 @@ class ConditionEventFactory(PythonEventFactory):
839
839
  return Injection(pre=[var_assign], assign=var_use, events=events)
840
840
 
841
841
  def visit_While(self, node: While) -> Injection:
842
- return self.visit_condition(node)
842
+ injection = self.visit_condition(node)
843
+ injection.body_last = injection.pre
844
+ return injection
843
845
 
844
846
  def visit_If(self, node: If) -> Injection:
845
847
  return self.visit_condition(node)
@@ -168,7 +168,6 @@ class SuggestionsFromPredicatesTypesTest(BaseTest):
168
168
 
169
169
  class SuggestionsFromPredicatesTest3(BaseTest):
170
170
  def _analyze_tests(self, analysis, relevant, irrelevant):
171
-
172
171
  return self.run_analysis(
173
172
  self.TEST_SPECIAL_VALUES,
174
173
  "def",
@@ -262,3 +261,26 @@ class SuggestionsFromPredicatesLoopTest(BaseTest):
262
261
  self.assertEqual(2, len(suggestions[0].lines))
263
262
  self.assertIn(Location("main.py", 7), suggestions[0].lines)
264
263
  self.assertIn(Location("main.py", 8), suggestions[0].lines)
264
+
265
+
266
+ class SuggestionsFromConditionsLoopTest(BaseTest):
267
+ @classmethod
268
+ def setUpClass(cls):
269
+ cls.analyzer = cls.run_analysis(
270
+ cls.TEST_LOOP,
271
+ "",
272
+ "condition",
273
+ relevant=[["00"]],
274
+ irrelevant=[["z"], ["123"]],
275
+ )
276
+ cls.original_dir = os.path.join(cls.TEST_RESOURCES, cls.TEST_LOOP)
277
+
278
+ def test_loop_suggestions(self):
279
+ suggestions = self.analyzer.get_sorted_suggestions(
280
+ base_dir=self.original_dir,
281
+ type_=AnalysisType.CONDITION,
282
+ metric=Spectrum.Tarantula,
283
+ )
284
+ self.assertAlmostEqual(0.5, suggestions[0].suspiciousness, delta=self.DELTA)
285
+ self.assertEqual(1, len(suggestions[0].lines))
286
+ self.assertIn(Location("main.py", 7), suggestions[0].lines)
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
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