Skip to content
This repository was archived by the owner on Feb 12, 2025. It is now read-only.

Commit d95cb2b

Browse files
committed
fixed conditions for while loop
1 parent f3505fd commit d95cb2b

File tree

4 files changed

+28
-4
lines changed

4 files changed

+28
-4
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
77

88
[project]
99
name = "sflkit"
10-
version = "0.2.8"
10+
version = "0.2.9"
1111
authors = [
1212
{ name = "Marius Smytzek", email = "marius.smytzek@cispa.de" },
1313
]

src/sflkit/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from sflkit.config import Config, parse_config
77
from sflkit.instrumentation.dir_instrumentation import DirInstrumentation
88

9-
__version__ = "0.2.8"
9+
__version__ = "0.2.9"
1010

1111

1212
def instrument_config(conf: Config, event_dump: str = None):

src/sflkit/language/python/factory.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -839,7 +839,9 @@ def visit_condition(self, node: typing.Union[If, While]) -> Injection:
839839
return Injection(pre=[var_assign], assign=var_use, events=events)
840840

841841
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
843845

844846
def visit_If(self, node: If) -> Injection:
845847
return self.visit_condition(node)

tests/test_suggestions.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,6 @@ def test_return_suggestions(self):
168168

169169
class SuggestionsFromPredicatesTest3(BaseTest):
170170
def _analyze_tests(self, analysis, relevant, irrelevant):
171-
172171
return self.run_analysis(
173172
self.TEST_SPECIAL_VALUES,
174173
"def",
@@ -262,3 +261,26 @@ def test_loop_suggestions(self):
262261
self.assertEqual(2, len(suggestions[0].lines))
263262
self.assertIn(Location("main.py", 7), suggestions[0].lines)
264263
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)

0 commit comments

Comments
 (0)