github / github/codeql

Java: Add predicate for getting ordered super interfaces

未关闭
#3,818 3 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
Java question
主要语言
CodeQL
星标
10.1k
派生
2.1k
平均合并
2 天 15 小时
30 天内合并 PR
141

描述

## Description of the issue
There are cases where it is interesting to know in which order interfaces appear in the `implements` / `extends` clause of a class / interface declaration. However, it appears QL currently do not offer a way to determine this. Would it be possible to add a predicate `Interface getSuperinterface(int index)` or similar?

## Use case
I want to find out if a class or interface implements / extends two interfaces which both declare a method with the same signature without overriding a common method, e.g.:
```
interface A {
void test();
}

interface B {
void test();
}

interface Combining extends A, B {
}
```

Here I would get `A` and `B` from `Combining` by using `getASupertype`. Assuming that there are the QL result variables `superA` and `superB` this creates the problem that it yield duplicate results: `super1=A, super2=B` and `super1=B, super2=A`.

If there was a `getSuperinterface(int index)` predicate you could make sure that `super1` appears before `super2` in the `extends` clause, eliminating the duplicate result.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。