示例#1
0
    def resolve_issues(
        self,
        info: ResolveInfo,
        codes: List[int],
        callables: List[str],
        file_names: List[str],
        min_trace_length_to_sinks: Optional[int] = None,
        max_trace_length_to_sinks: Optional[int] = None,
        min_trace_length_to_sources: Optional[int] = None,
        max_trace_length_to_sources: Optional[int] = None,
        **args
    ) -> List[IssueQueryResult]:
        session = get_session(info.context)
        run_id = Query.latest_run_id(session)

        builder = (
            IssueQueryBuilder(run_id)
            .with_session(session)
            .where_codes_is_any_of(codes)
            .where_callables_is_any_of(callables)
            .where_file_names_is_any_of(file_names)
            .where_trace_length_to_sinks(
                min_trace_length_to_sinks, max_trace_length_to_sinks
            )
            .where_trace_length_to_sources(
                min_trace_length_to_sources, max_trace_length_to_sources
            )
        )

        return builder.get()
示例#2
0
    def resolve_issues(
        self,
        info: ResolveInfo,
        codes: List[int],
        callables: List[str],
        file_names: List[str],
        min_trace_length_to_sinks: Optional[int] = None,
        max_trace_length_to_sinks: Optional[int] = None,
        min_trace_length_to_sources: Optional[int] = None,
        max_trace_length_to_sources: Optional[int] = None,
        # pyre-fixme[2]: Parameter must be annotated.
        **args
    ) -> List[IssueQueryResult]:
        session = get_session(info.context)
        run_id = Query.latest_run_id(session)

        builder = (
            issues.Query(session, run_id).where_codes_is_any_of(
                codes).where_callables_is_any_of(callables).
            where_file_names_is_any_of(file_names).where_trace_length_to_sinks(
                min_trace_length_to_sinks,
                max_trace_length_to_sinks).where_trace_length_to_sources(
                    min_trace_length_to_sources, max_trace_length_to_sources))

        return builder.get()
示例#3
0
文件: schema.py 项目: facebook/sapp
    def resolve_issues(
        self,
        info: ResolveInfo,
        run_id: int,
        codes: List[int],
        paths: List[str],
        statuses: List[str],
        callables: Optional[MatchesIsField] = None,
        features: Optional[List[FeatureCondition]] = None,
        min_trace_length_to_sinks: Optional[int] = None,
        max_trace_length_to_sinks: Optional[int] = None,
        min_trace_length_to_sources: Optional[int] = None,
        max_trace_length_to_sources: Optional[int] = None,
        issue_instance_id: Optional[int] = None,
        is_new_issue: Optional[bool] = None,
        source_names: Optional[MatchesIsField] = None,
        source_kinds: Optional[MatchesIsField] = None,
        sink_names: Optional[MatchesIsField] = None,
        sink_kinds: Optional[MatchesIsField] = None,
        **kwargs: Any,
    ) -> List[IssueQueryResult]:
        session = get_session(info.context)

        filter_instance = Filter.from_query(
            codes,
            paths,
            callables,
            statuses,
            source_names,
            source_kinds,
            sink_names,
            sink_kinds,
            features,
            min_trace_length_to_sinks,
            max_trace_length_to_sinks,
            min_trace_length_to_sources,
            max_trace_length_to_sources,
            is_new_issue,
        )

        issues = (Instance(session,
                           DBID(run_id)).where_filter(filter_instance).
                  where_issue_instance_id_is(issue_instance_id).get())

        return issues
示例#4
0
    def resolve_issues(
        self,
        info: ResolveInfo,
        run_id: int,
        codes: List[int],
        paths: List[str],
        callables: List[str],
        features: Optional[List[FeatureCondition]] = None,
        min_trace_length_to_sinks: Optional[int] = None,
        max_trace_length_to_sinks: Optional[int] = None,
        min_trace_length_to_sources: Optional[int] = None,
        max_trace_length_to_sources: Optional[int] = None,
        issue_instance_id: Optional[int] = None,
        is_new_issue: Optional[bool] = None,
        **kwargs: Any,
    ) -> List[IssueQueryResult]:
        session = get_session(info.context)

        builder = (
            issues.Instance(session, DBID(run_id))
            .where_codes_is_any_of(codes)
            .where_callables_is_any_of(callables)
            .where_path_is_any_of(paths)
            .where_trace_length_to_sinks(
                min_trace_length_to_sinks, max_trace_length_to_sinks
            )
            .where_trace_length_to_sources(
                min_trace_length_to_sources, max_trace_length_to_sources
            )
            .where_issue_instance_id_is(issue_instance_id)
            .where_is_new_issue(is_new_issue)
        )

        for feature in features or []:
            if feature.mode == "any of":
                # pyre-fixme[6]: Expected `List[str]` for 1st param but got `List`.
                builder = builder.where_any_features(feature.features)
            if feature.mode == "all of":
                # pyre-fixme[6]: Expected `List[str]` for 1st param but got `List`.
                builder = builder.where_all_features(feature.features)
            if feature.mode == "none of":
                # pyre-fixme[6]: Expected `List[str]` for 1st param but got `List`.
                builder = builder.where_exclude_features(feature.features)

        return builder.get()
示例#5
0
    def resolve_issues(
        self,
        info: ResolveInfo,
        codes: List[int],
        paths: List[str],
        callables: List[str],
        features_mode: Optional[str] = None,
        features: Optional[List[str]] = None,
        min_trace_length_to_sinks: Optional[int] = None,
        max_trace_length_to_sinks: Optional[int] = None,
        min_trace_length_to_sources: Optional[int] = None,
        max_trace_length_to_sources: Optional[int] = None,
        issue_id: Optional[int] = None,
        **kwargs: Any,
    ) -> List[IssueQueryResult]:
        session = get_session(info.context)
        run_id = Query.latest_run_id(session)

        builder = (issues.Query(
            session, run_id
        ).where_codes_is_any_of(codes).where_callables_is_any_of(
            callables).where_path_is_any_of(paths).where_trace_length_to_sinks(
                min_trace_length_to_sinks,
                max_trace_length_to_sinks).where_trace_length_to_sources(
                    min_trace_length_to_sources,
                    max_trace_length_to_sources).where_issue_id_is(issue_id))

        if features_mode and features:
            if features_mode == "any of":
                builder = builder.where_any_features(features)
            if features_mode == "all of":
                builder = builder.where_all_features(features)
            if features_mode == "none of":
                builder = builder.where_exclude_features(features)

        return builder.get()
示例#6
0
文件: schema.py 项目: facebook/sapp
 def resolve_runs(self, info: ResolveInfo) -> List[run.Run]:
     session = get_session(info.context)
     return run.runs(session)