【问题标题】:SonarQube Javascript Remove the unused function parameter XYZSonarQube Javascript 移除未使用的函数参数 XYZ
【发布时间】:2018-03-23 11:44:46
【问题描述】:

在分析我的项目时,我得到了很多类型的误报

去掉未使用的函数参数XYZ

对于父类具有带参数的方法但子类不需要任何参数但在运行时我不知道也不想知道对象是什么实例的情况,因此我想传递一个参数即使由于方法签名而被忽略

是否有机会从声纳报告中排除此类情况?

class EdgeFinder{
    getNewEdgeMapEntry(face){} // it's bascially an abstract class to speak in Java terms and subclasses implement variations of some methods which the parent class defined but does not implement

...
}

class SingularEdgeFinder extends EdgeFinder{
   getNewEdgeMapEntry(face){
      return 1;
   }
   ...
}

class DifferentNormalsEdgeFinder extends EdgeFinder{
   getNewEdgeMapEntry(face){
      return [face.normal];
   }
   ...
}

然后我在代码中的某个位置创建任何 edgeHelper 类的实例,然后我执行这些方法,所以我当时不知道是什么 - 或者至少我不想再关心了 -我知道我只关心 EdgeHelper 的一个子类。

【问题讨论】:

  • 请附上代码示例。我不清楚您如何在运行时不知道正在使用哪些参数,哪些没有。

标签: javascript sonarqube sonarjs


【解决方案1】:

当你使用 JavaScript 类时,继承类的方法不需要和父类的方法有相同数量的参数。它的工作方式与您熟悉的 Java 不同,没有方法重载或类似的东西。

换句话说,如果您不使用参数,完全可以省略它,因此您的代码示例可以并且应该这样编写:

class EdgeFinder{
    getNewEdgeMapEntry() {}
}

class SingularEdgeFinder extends EdgeFinder{
    getNewEdgeMapEntry() {
        return 1;
   }
}

class DifferentNormalsEdgeFinder extends EdgeFinder{
    getNewEdgeMapEntry(face) {
        return [face.normal];
    }
}

“抽象”基类不必在其签名中定义任何参数,这是 Java 编程中不存在于 JavaScript 中的概念。事实上,如果你根本不直接使用基类,那么定义它甚至没有意义:

class EdgeFinder {}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-02
    • 2010-09-29
    • 2021-09-09
    • 2020-08-18
    • 2017-05-01
    • 2022-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多