pylint对未使用的参数的误报

时间:2014-01-02 11:17:35

标签: python pylint

我正在使用pylint清理代码,以便能够将其用于预提交验证。实际使用它时,我有很多“未使用的参数”警告。这是一个触发假阳性的例子。

def addSeven(foo): #Here I have a warning "Unused argument 'foo'"
    foo += [7]

example = [3, 4, 5, 6]

addSeven(example)
print example

我不希望全局压制这个警告,因为我希望看到一个参数真的未被使用的时间。是否还有其他选项可以在每次出现时手动添加禁用注释? 这是pylint的一个已知问题吗?

3 个答案:

答案 0 :(得分:10)

您可以通过添加以下内容禁用任何范围:

def myfunc(a):
    # pylint: disable=W0612,W0613

请参阅https://pylint.readthedocs.io/en/latest/faq.html#is-it-possible-to-locally-disable-a-particular-message

答案 1 :(得分:5)

这是pylint的合理行为;如果传递的对象是不可变的,那么给出的语句本质上是一个无操作。只有在可变的情况下才会显得不正确。

不幸的是,如果你不想全局禁用警告,那么你需要为每个实例禁用它。

答案 2 :(得分:5)

pylint通常是糟糕风格的好指标。即使它给出“误报”,也可能是因为违反惯例。我不是专家,但我会说一个只有副作用的功能并不是最佳的。有些人(例如,清洁法典中的罗伯特马丁)甚至说所有副作用都是谎言。

我建议(再次,我不是专家):

<!-- FORM SECTION -->

<div id="callcontain" class="container-fluid">
    <div class="container form">
        <div class="row">
            <div class="col-md-8 col-md-offset-2">



                <form id="contact-form" role="form" method="post" action="index.php">

                    <div class="controls">
                        <div class="row">
                            <div class="col-md-6">


                                <!-- Form Name -->

                                <div class="form-group">
                                    <label for="name" class="control-label">Name <small>*</small></label>
                                    <input type="text" class="form-control" id="name" required="required" name="name" placeholder="Name" value="<?php echo htmlspecialchars($_POST['name']); ?>">
                                    <?php echo "<p class='text-danger'>$errName</p>";?>
                                    <div class="help-block with-errors"></div>
                                </div>

                                <!-- END Form Name -->

                            </div>


                            <div class="col-md-6">


                                <!-- Form Number -->

                                <div class="form-group">
                                    <label for="phone" class="control-label">Phone Number <small>*</small></label>
                                    <input type="phone" class="form-control" id="phone" required="required" name="phone" placeholder="Phone Number" value="<?php echo htmlspecialchars($_POST['phone']); ?>">
                                    <?php echo "<p class='text-danger'>$errPhone</p>";?>
                                    <div class="help-block with-errors"></div>
                                </div>

                                <!-- END Form Number -->

                            </div>

                        </div>  <!-- END ROW 1 FORM -->



                        <div class="row">
                            <div class="col-md-12">


                                <!-- Form Message -->

                                <div class="form-group">
                                    <label for="message" class="control-label">Message</label>
                                    <textarea class="form-control" rows="6" name="message"><?php echo htmlspecialchars($_POST['message']);?></textarea>
                                    <?php echo "<p class='text-danger'>$errMessage</p>";?>
                                    <div class="help-block with-errors"></div>
                                </div>

                                <!-- END Form Message -->


                            </div>


                            <!-- Form Submit -->

                            <div class="col-md-12 text-center">
                                <input id="submit" name="submit" type="submit" value="Send" class="btn btn-success btn-send">
                            </div>

                            <!-- END Form Submit -->


                        </div>


                        <!-- Form Required -->

                        <div class="row">
                            <div class="col-md-12 text-center">
                                <p class="text-muted small">* These fields are required.</p>
                            </div>
                            <div class="form-group">
                                <div class="col-sm-12">
                                    <?php echo $result; ?>
                                </div>
                            </div>
                        </div>


                </form> <!-- END FORM -->

                </div>
            </div>
        </div>
    </div>


</div>  <!-- END FORM SECTION -->

参数应该只输入,输出应该是返回值。据我所知,输出参数是不好的做法。