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.
- {sflkit-0.2.8/src/SFLKit.egg-info → sflkit-0.2.9}/PKG-INFO +1 -1
- {sflkit-0.2.8 → sflkit-0.2.9}/pyproject.toml +4 -1
- {sflkit-0.2.8 → sflkit-0.2.9/src/SFLKit.egg-info}/PKG-INFO +1 -1
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/__init__.py +1 -1
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/python/factory.py +3 -1
- {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_suggestions.py +23 -1
- {sflkit-0.2.8 → sflkit-0.2.9}/LICENSE +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/README.md +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/setup.cfg +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/setup.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/SFLKit.egg-info/SOURCES.txt +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/SFLKit.egg-info/dependency_links.txt +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/SFLKit.egg-info/entry_points.txt +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/SFLKit.egg-info/requires.txt +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/SFLKit.egg-info/top_level.txt +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/analysis/__init__.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/analysis/analysis_type.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/analysis/analyzer.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/analysis/factory.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/analysis/mapping.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/analysis/predicate.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/analysis/similarity.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/analysis/spectra.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/analysis/suggestion.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/cli.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/color.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/config.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/instrumentation/__init__.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/instrumentation/dir_instrumentation.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/instrumentation/file_instrumentation.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/__init__.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/extract.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/finder.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/language.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/meta.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/python/__init__.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/python/extract.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/python/finder.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/python/visitor.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/language/visitor.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/model/__init__.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/model/event_file.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/model/model.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/model/scope.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/runners/__init__.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/src/sflkit/runners/run.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_analysis_objects.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_cli.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_color.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_config.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_events.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_execution.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_instrumentation.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_language.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_predicates.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_runner.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_scope.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_spectra.py +0 -0
- {sflkit-0.2.8 → sflkit-0.2.9}/tests/test_visitors.py +0 -0
|
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
|
|
|
7
7
|
|
|
8
8
|
[project]
|
|
9
9
|
name = "sflkit"
|
|
10
|
-
version = "0.2.
|
|
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']
|
|
@@ -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.
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|