Exemplo n.º 1
0
class TestPotentialHits:
    # noinspection PyAttributeOutsideInit
    def setup(self):
        self.detector = StubDetector()
        self.misuses = []
        self.uut = PotentialHits(self.misuses)

    def test_no_hit(self):
        self.misuses.append(create_misuse("-m1-"))
        finding = Finding({"rank": "no potential hit"})
        finding.is_potential_hit = lambda misuse, y: False

        potential_hits = self.uut.get_potential_hits([finding])

        assert_equals([], potential_hits)

    def test_potential_hit(self):
        self.misuses.append(create_misuse("-m1-"))
        finding = Finding({"rank": ":potential hit for m1:"})
        finding.is_potential_hit = lambda misuse, y: misuse == self.misuses[0]

        potential_hits = self.uut.get_potential_hits([finding])

        assert_equals(self.misuses[0].id, potential_hits[0]["misuse"])

    def test_potential_hit_for_second_misuse(self):
        self.misuses.extend([create_misuse("-1st-"), create_misuse("-2nd-")])
        finding = Finding({"rank": ":some potential hit for second misuse:"})
        finding.is_potential_hit = lambda misuse, y: misuse == self.misuses[1]

        potential_hits = self.uut.get_potential_hits([finding])

        assert_equals(self.misuses[1].id, potential_hits[0]["misuse"])
Exemplo n.º 2
0
    def get_run(self, version: ProjectVersion) -> Run:
        if self.id == Experiment.PROVIDED_PATTERNS:
            executions = [
                DetectOnlyExecution(self.detector, version, misuse, self.findings_base_path,
                                    PotentialHits(self.detector, [misuse])) for
                misuse in version.misuses if misuse.patterns]
        elif self.id == Experiment.TOP_FINDINGS:
            executions = [
                MineAndDetectExecution(self.detector, version, self.findings_base_path,
                                       AllFindings(self.detector, self.limit))]
        elif self.id == Experiment.BENCHMARK:
            executions = [MineAndDetectExecution(self.detector, version, self.findings_base_path,
                                                 PotentialHits(self.detector, version.misuses))]
        else:
            executions = []

        return Run(executions)
Exemplo n.º 3
0
    def setup(self):
        self.misuse = create_misuse('-misuse-', meta={"location": {"file": "a", "method": "m()"}})
        self.version = create_version("-version-", misuses=[self.misuse], project=create_project("-project-"))
        self.detector = StubDetector()
        self.findings_base_path = "-findings-"

        self.logger = logging.getLogger("test")

        self.uut = DetectOnlyExecution(self.detector, self.version, self.misuse, self.findings_base_path,
                                       PotentialHits(self.misuse))
Exemplo n.º 4
0
 def setup(self):
     self.detector = StubDetector()
     self.misuses = []
     self.uut = PotentialHits(self.misuses)
Exemplo n.º 5
0
 def get_run(self, version: ProjectVersion):
     findings_filter = PotentialHits(version.misuses)
     return Run([
         MineAndDetectExecution(self.detector, version,
                                self.findings_base_path, findings_filter)
     ])
Exemplo n.º 6
0
 def __create_execution(self, version, misuse):
     findings_filter = PotentialHits([misuse])
     return DetectOnlyExecution(self.detector, version, misuse,
                                self.findings_base_path, findings_filter)