From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.5 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A378FC2D0E4 for ; Mon, 23 Nov 2020 15:04:46 +0000 (UTC) Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0B4C72067C for ; Mon, 23 Nov 2020 15:04:45 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="T4KmNxMp" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0B4C72067C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=linux-kernel-mentees-bounces@lists.linuxfoundation.org Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id 82F4885F4E; Mon, 23 Nov 2020 15:04:45 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id tulBBgxfM3Zw; Mon, 23 Nov 2020 15:04:43 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by fraxinus.osuosl.org (Postfix) with ESMTP id D969285AE9; Mon, 23 Nov 2020 15:04:43 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id A5757C163C; Mon, 23 Nov 2020 15:04:43 +0000 (UTC) Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by lists.linuxfoundation.org (Postfix) with ESMTP id 5803AC0052 for ; Mon, 23 Nov 2020 15:04:42 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id 44A5F86655 for ; Mon, 23 Nov 2020 15:04:42 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id o8WuC0Mvm9JC for ; Mon, 23 Nov 2020 15:04:41 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-pf1-f196.google.com (mail-pf1-f196.google.com [209.85.210.196]) by whitealder.osuosl.org (Postfix) with ESMTPS id 684B68664E for ; Mon, 23 Nov 2020 15:04:41 +0000 (UTC) Received: by mail-pf1-f196.google.com with SMTP id v5so11103190pff.10 for ; Mon, 23 Nov 2020 07:04:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=9GeUDe+xnJKsGx/qdJGPyMAJKtjNn5EQmMLLNrNDZA4=; b=T4KmNxMpEXkQdIOcWZcQgxxaRoZwg7XSatqLnTSF27N92I7FzqsJwQn9p2TmP6jEyK RB58PDlXb4OLzobZvLpUnkIL0gykdL/zcEWF85Hi2ZXGIvM0dFqMrAnZCZnAUTGHjsfO A3gn7+N5yZEERptQ6amEu5mIhL8MkNs+47n+WVAMA605rP3c9n4r3kwXsPu90QRulUe7 xb45ZkLDbeQ/qsj5U82j/EDBOWzKfcLa1KDOlyFYi5P5ynUYsAq+opImW1+OTmCl8WUc EuGEz4Woo+uYwbizHh1YONYcvR70+XnwH/eJoZaVE9fmU0je7ifksmwL0JqYQ+lMlkVf 4iKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=9GeUDe+xnJKsGx/qdJGPyMAJKtjNn5EQmMLLNrNDZA4=; b=h0R6zXqfWLLJq1CWkzd6zl6FyjPR0DV2SrGTs/Wc0G4GTMumV9cirg+PW5syZ1F7JE pO3A9z3osehm4T3riC2zr3JQji24ta7knGnJ8P6GMnFrNIZHwW3/4xxRE93ycpaZ+0KG uOuEinOZC9i7v5EXgt/PdHcCuNdBvrJWCrsrGoom1GlSYWSRICA7AGu0RpvadmJWtdQj bqamrZjm04E3CneD893uEPSNhBB+DpkJJrMjD5+xk9ihF8Ue3ug7l3FhsEm1KucqgCQB zVWFs9WUnOWMahP2PmI9C7H0djIRCkpooOHJNoV8dx5QymeT9OcoDYoLngwrKgoEKXRm NNxw== X-Gm-Message-State: AOAM5333SVeyXPKkNrRw9+tqnLzRn0ptJOVUu/TpfuybqgSvfXPXPSIj n+lybZO94sb4GweFA4UqOKQ= X-Google-Smtp-Source: ABdhPJycrDqMFCPFXAXhycXgCA7KGW9CCF/3QrmjZFMxMCwirJZunb7QAOBHXT6TQLHrRZxHa/RbaA== X-Received: by 2002:a63:4a02:: with SMTP id x2mr28240942pga.313.1606143880701; Mon, 23 Nov 2020 07:04:40 -0800 (PST) Received: from localhost.localdomain ([2402:3a80:434:b4c0:715e:8c1c:620e:4557]) by smtp.googlemail.com with ESMTPSA id kb12sm14302337pjb.2.2020.11.23.07.04.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Nov 2020 07:04:39 -0800 (PST) From: Aditya Srivastava To: joe@perches.com Date: Mon, 23 Nov 2020 20:34:30 +0530 Message-Id: <20201123150430.7985-1-yashsri421@gmail.com> X-Mailer: git-send-email 2.17.1 Cc: linux-kernel-mentees@lists.linuxfoundation.org, linux-kernel@vger.kernel.org, yashsri421@gmail.com Subject: [Linux-kernel-mentees] [PATCH v3] checkpatch: add fix and improve warning msg for Non-standard signature X-BeenThere: linux-kernel-mentees@lists.linuxfoundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: linux-kernel-mentees-bounces@lists.linuxfoundation.org Sender: "Linux-kernel-mentees" Currently, checkpatch.pl warns for BAD_SIGN_OFF on non-standard signature styles. This warning occurs because of incorrect use of signature tags, e.g. an evaluation on v4.13..v5.8 showed the use of following incorrect signature tags, which may seem correct, but are not standard: 1) Requested-by (count: 48) => Suggested-by Rationale: In an open-source project, there are no 'requests', just 'suggestions' to convince a maintainer to accept your patch 2) Co-authored-by (count: 43) => Co-developed-by Rationale: Co-developed-by and Co-authored-by are synonyms 3) Analyzed-by (count: 22) / Analysed-by (count: 5) => Co-developed-by Rationale: Analyzing is a part of Software Development, so 'Co-developed-by' is perfectly fine, even if contributor did not create code 4) Improvements-by (count: 19) => Co-developed-by 5) Noticed-by (count: 11) => Reported-by 6) Inspired-by (count: 11) => Suggested-by 7) Verified-by (count: 8) => Tested-by Rationale: Used by a single user. On reading mailing list, it seems Tested-by might be a suitable alternative 8) Okay-ished-by (count: 8) => Acked-by Rationale: Used by a single user. On reading mailing list, it seems Acked-by must be suitable alternative 9) Acked-for-MFD-by (count: 6) => Acked-by 10) Reviewed-off-by (count: 5) => Reviewed-by 11) Proposed-by (count: 5) => Suggested-by Rationale: On observing the mailing list, this tag is always used for a maintainer. It seems that the changes might have been suggested by them and the tag is used as acknowledgment for the same 12) Fixed-by (count: 3) => Co-developed-by Rationale: Fixing bug is a part of Software Development, so 'Co-developed-by' is perfectly fine, even if contributor did not create code 13) Pointed-out-by (count: 3) / Pointed-at-by (count: 2) => Suggested-by Rationale: The tags are used for maintainers. It seems that the changes might have been suggested by them and the tag is used as acknowledgment for the same E.g., Pointed-at-by: Greg Kroah-Hartman 14) Suggestions-by (count: 3) => Suggested-by 15) Generated-by (count: 17) => remove the tag On observing the mailing list, this tag is always used for quoting the tool or script, which might have been used to generate the patch. E.g. Generated-by: scripts/coccinelle/api/alloc/kzalloc-simple.cocci 16) Celebrated-by (count: 3) => remove the tag This tag was used for only one commit. On observing mailing list, it seem like the celebration for a particular patch and changes. Provide a fix by: 1) replacing the non-standard signature with its standard equivalent 2) removing the signature if it is not required Also, improve warning messages correspondingly, providing users suggestions to either replace or remove the signature. Also provide suitable rationale to the user for the suggestion made. Signed-off-by: Aditya Srivastava --- changes in v2: replace commit specific example with brief evaluation changes in v3: provide rationale to users for every signature tag suggestion; modify commit message describing arrival to conclusion in a structured way scripts/checkpatch.pl | 101 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 99 insertions(+), 2 deletions(-) diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index fdfd5ec09be6..f402c9c3958f 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -506,6 +506,81 @@ our $signature_tags = qr{(?xi: Cc: )}; +our %standard_signature_fix = ( + "Requested-by:" => { + suggestion => "Suggested-by:", + rationale => "In an open-source project, there are no 'requests', just 'suggestions' to convince a maintainer to accept your patch", + }, + "Co-authored-by:" => { + suggestion => "Co-developed-by:", + rationale => "Co-developed-by and Co-authored-by are synonyms", + }, + "Analyzed-by:" => { + suggestion => "Co-developed-by:", + rationale => "Analyzing is a part of Software Development, so 'Co-developed-by' is perfectly fine, even if contributor did not create code", + }, + "Analysed-by:" => { + suggestion => "Co-developed-by:", + rationale => "Analysing is a part of Software Development, so 'Co-developed-by' is perfectly fine, even if contributor did not create code", + }, + "Improvements-by:" => { + suggestion => "Co-developed-by:", + rationale => "Performing improvements are a part of Software Development, so 'Co-developed-by' is perfectly fine, even if contributor did not create code", + }, + "Noticed-by:" => { + suggestion => "Reported-by:", + rationale => "Reported-by and Noticed-by are synonyms", + }, + "Inspired-by:" => { + suggestion => "Suggested-by:", + rationale => "Suggested-by is the standard signature tag for acknowledging user for their suggestions", + }, + "Verified-by:" => { + suggestion => "Tested-by:", + rationale => "Tested-by and Verified-by are synonyms", + }, + "Okay-ished-by:" => { + suggestion => "Acked-by:", + rationale => "Acked-by is the standard signature tag for recording your approval", + }, + "Acked-for-MFD-by:" => { + suggestion => "Acked-by:", + rationale => "Acked-by is the standard signature tag for recording your approval", + }, + "Reviewed-off-by:" => { + suggestion => "Reviewed-by:", + rationale => "Reviewed-by is the standard signature tag for recording your approval", + }, + "Proposed-by:" => { + suggestion => "Suggested-by:", + rationale => "Proposing changes is same as suggesting changes, so Suggested-by seems perfectly fine", + }, + "Fixed-by:" => { + suggestion => "Co-developed-by:", + rationale => "Fixing bug is a part of Software Development, so 'Co-developed-by' is perfectly fine, even if contributor did not create code", + }, + "Pointed-out-by:" => { + suggestion => "Suggested-by:", + rationale => "Pointing out certain changes is synonymous to suggesting changes, so Suggested-by seems perfectly fine", + }, + "Pointed-at-by:" => { + suggestion => "Suggested-by:", + rationale => "Pointing at certain changes is synonymous to suggesting changes, so Suggested-by seems perfectly fine", + }, + "Suggestions-by:" => { + suggestion => "Suggested-by:", + rationale => "Suggested-by is the standard signature tag for acknowledging user for their suggestions", + }, + "Generated-by:" => { + suggestion => "remove", + rationale => "Signature tags are used to acknowledge users for their contributions. It is advised to describe about tools in commit description instead", + }, + "Celebrated-by:" => { + suggestion => "remove", + rationale => "Signature tags are used to acknowledge users for their contributions. This tag may not be required at all", + }, +); + our @typeListMisordered = ( qr{char\s+(?:un)?signed}, qr{int\s+(?:(?:un)?signed\s+)?short\s}, @@ -2773,8 +2848,30 @@ sub process { my $ucfirst_sign_off = ucfirst(lc($sign_off)); if ($sign_off !~ /$signature_tags/) { - WARN("BAD_SIGN_OFF", - "Non-standard signature: $sign_off\n" . $herecurr); + my $suggested_signature = ""; + my $rationale = ""; + if (exists($standard_signature_fix{$sign_off})) { + $suggested_signature = $standard_signature_fix{$sign_off}{'suggestion'}; + $rationale = $standard_signature_fix{$sign_off}{'rationale'}; + } + if ($suggested_signature eq "") { + WARN("BAD_SIGN_OFF", + "Non-standard signature: $sign_off\n" . $herecurr); + } + elsif ($suggested_signature eq "remove") { + if (WARN("BAD_SIGN_OFF", + "Non-standard signature: $sign_off. Please consider removing this signature tag. $rationale\n" . $herecurr) && + $fix) { + fix_delete_line($fixlinenr, $rawline); + } + } + else { + if (WARN("BAD_SIGN_OFF", + "Non-standard signature: $sign_off. Please use '$suggested_signature' instead. $rationale\n" . $herecurr) && + $fix) { + $fixed[$fixlinenr] =~ s/$sign_off/$suggested_signature/; + } + } } if (defined $space_before && $space_before ne "") { if (WARN("BAD_SIGN_OFF", -- 2.17.1 _______________________________________________ Linux-kernel-mentees mailing list Linux-kernel-mentees@lists.linuxfoundation.org https://lists.linuxfoundation.org/mailman/listinfo/linux-kernel-mentees From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 621E9C2D0E4 for ; Mon, 23 Nov 2020 15:04:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0ABA320773 for ; Mon, 23 Nov 2020 15:04:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="T4KmNxMp" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389336AbgKWPEm (ORCPT ); Mon, 23 Nov 2020 10:04:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51622 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728308AbgKWPEl (ORCPT ); Mon, 23 Nov 2020 10:04:41 -0500 Received: from mail-pf1-x444.google.com (mail-pf1-x444.google.com [IPv6:2607:f8b0:4864:20::444]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 75BB3C0613CF for ; Mon, 23 Nov 2020 07:04:41 -0800 (PST) Received: by mail-pf1-x444.google.com with SMTP id x24so2869856pfn.6 for ; Mon, 23 Nov 2020 07:04:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=9GeUDe+xnJKsGx/qdJGPyMAJKtjNn5EQmMLLNrNDZA4=; b=T4KmNxMpEXkQdIOcWZcQgxxaRoZwg7XSatqLnTSF27N92I7FzqsJwQn9p2TmP6jEyK RB58PDlXb4OLzobZvLpUnkIL0gykdL/zcEWF85Hi2ZXGIvM0dFqMrAnZCZnAUTGHjsfO A3gn7+N5yZEERptQ6amEu5mIhL8MkNs+47n+WVAMA605rP3c9n4r3kwXsPu90QRulUe7 xb45ZkLDbeQ/qsj5U82j/EDBOWzKfcLa1KDOlyFYi5P5ynUYsAq+opImW1+OTmCl8WUc EuGEz4Woo+uYwbizHh1YONYcvR70+XnwH/eJoZaVE9fmU0je7ifksmwL0JqYQ+lMlkVf 4iKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=9GeUDe+xnJKsGx/qdJGPyMAJKtjNn5EQmMLLNrNDZA4=; b=pC+4oDXc8e/XM3hHZG0XicXE40PAaRUo4thb5mV6QFziOpHRaF8eHOvaJk5zDqS72A 3vc3IrPjsVVM9s53rNQuhiTwJWpk/roy9yknVr7Ez+TXUinFGw6IH+Q+xUEiSU8MgvEL 0jfl8nTJ6IRVGhtlrSPVOV+e1GUNLR4mjpw7zjnHrQB79FExKvKqhkDMrvVxICfBOZa3 9hX7SPwsDFNuBJ99fFAd0b1NdcPiCGIEIPfl7K+ejWS3FGrszhjZkH5w9rSCxUP2RaTy 91tH5jRG/JqlekPJR3ZeNfj054tVW0lygRgCH8Llj/E+RnGlIBWJlDt6o+zRyNdkcXQ+ stOw== X-Gm-Message-State: AOAM532ZRhpOxwuc7IvS9OeJQ8lRzERmHJ2mPqiXPoBRT28ZKfYnUYZL /PP9UynDqvErAlrv4cSens3Haf5JrcqmIw== X-Google-Smtp-Source: ABdhPJycrDqMFCPFXAXhycXgCA7KGW9CCF/3QrmjZFMxMCwirJZunb7QAOBHXT6TQLHrRZxHa/RbaA== X-Received: by 2002:a63:4a02:: with SMTP id x2mr28240942pga.313.1606143880701; Mon, 23 Nov 2020 07:04:40 -0800 (PST) Received: from localhost.localdomain ([2402:3a80:434:b4c0:715e:8c1c:620e:4557]) by smtp.googlemail.com with ESMTPSA id kb12sm14302337pjb.2.2020.11.23.07.04.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Nov 2020 07:04:39 -0800 (PST) From: Aditya Srivastava To: joe@perches.com Cc: yashsri421@gmail.com, lukas.bulwahn@gmail.com, linux-kernel-mentees@lists.linuxfoundation.org, linux-kernel@vger.kernel.org Subject: [PATCH v3] checkpatch: add fix and improve warning msg for Non-standard signature Date: Mon, 23 Nov 2020 20:34:30 +0530 Message-Id: <20201123150430.7985-1-yashsri421@gmail.com> X-Mailer: git-send-email 2.17.1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently, checkpatch.pl warns for BAD_SIGN_OFF on non-standard signature styles. This warning occurs because of incorrect use of signature tags, e.g. an evaluation on v4.13..v5.8 showed the use of following incorrect signature tags, which may seem correct, but are not standard: 1) Requested-by (count: 48) => Suggested-by Rationale: In an open-source project, there are no 'requests', just 'suggestions' to convince a maintainer to accept your patch 2) Co-authored-by (count: 43) => Co-developed-by Rationale: Co-developed-by and Co-authored-by are synonyms 3) Analyzed-by (count: 22) / Analysed-by (count: 5) => Co-developed-by Rationale: Analyzing is a part of Software Development, so 'Co-developed-by' is perfectly fine, even if contributor did not create code 4) Improvements-by (count: 19) => Co-developed-by 5) Noticed-by (count: 11) => Reported-by 6) Inspired-by (count: 11) => Suggested-by 7) Verified-by (count: 8) => Tested-by Rationale: Used by a single user. On reading mailing list, it seems Tested-by might be a suitable alternative 8) Okay-ished-by (count: 8) => Acked-by Rationale: Used by a single user. On reading mailing list, it seems Acked-by must be suitable alternative 9) Acked-for-MFD-by (count: 6) => Acked-by 10) Reviewed-off-by (count: 5) => Reviewed-by 11) Proposed-by (count: 5) => Suggested-by Rationale: On observing the mailing list, this tag is always used for a maintainer. It seems that the changes might have been suggested by them and the tag is used as acknowledgment for the same 12) Fixed-by (count: 3) => Co-developed-by Rationale: Fixing bug is a part of Software Development, so 'Co-developed-by' is perfectly fine, even if contributor did not create code 13) Pointed-out-by (count: 3) / Pointed-at-by (count: 2) => Suggested-by Rationale: The tags are used for maintainers. It seems that the changes might have been suggested by them and the tag is used as acknowledgment for the same E.g., Pointed-at-by: Greg Kroah-Hartman 14) Suggestions-by (count: 3) => Suggested-by 15) Generated-by (count: 17) => remove the tag On observing the mailing list, this tag is always used for quoting the tool or script, which might have been used to generate the patch. E.g. Generated-by: scripts/coccinelle/api/alloc/kzalloc-simple.cocci 16) Celebrated-by (count: 3) => remove the tag This tag was used for only one commit. On observing mailing list, it seem like the celebration for a particular patch and changes. Provide a fix by: 1) replacing the non-standard signature with its standard equivalent 2) removing the signature if it is not required Also, improve warning messages correspondingly, providing users suggestions to either replace or remove the signature. Also provide suitable rationale to the user for the suggestion made. Signed-off-by: Aditya Srivastava --- changes in v2: replace commit specific example with brief evaluation changes in v3: provide rationale to users for every signature tag suggestion; modify commit message describing arrival to conclusion in a structured way scripts/checkpatch.pl | 101 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 99 insertions(+), 2 deletions(-) diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index fdfd5ec09be6..f402c9c3958f 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -506,6 +506,81 @@ our $signature_tags = qr{(?xi: Cc: )}; +our %standard_signature_fix = ( + "Requested-by:" => { + suggestion => "Suggested-by:", + rationale => "In an open-source project, there are no 'requests', just 'suggestions' to convince a maintainer to accept your patch", + }, + "Co-authored-by:" => { + suggestion => "Co-developed-by:", + rationale => "Co-developed-by and Co-authored-by are synonyms", + }, + "Analyzed-by:" => { + suggestion => "Co-developed-by:", + rationale => "Analyzing is a part of Software Development, so 'Co-developed-by' is perfectly fine, even if contributor did not create code", + }, + "Analysed-by:" => { + suggestion => "Co-developed-by:", + rationale => "Analysing is a part of Software Development, so 'Co-developed-by' is perfectly fine, even if contributor did not create code", + }, + "Improvements-by:" => { + suggestion => "Co-developed-by:", + rationale => "Performing improvements are a part of Software Development, so 'Co-developed-by' is perfectly fine, even if contributor did not create code", + }, + "Noticed-by:" => { + suggestion => "Reported-by:", + rationale => "Reported-by and Noticed-by are synonyms", + }, + "Inspired-by:" => { + suggestion => "Suggested-by:", + rationale => "Suggested-by is the standard signature tag for acknowledging user for their suggestions", + }, + "Verified-by:" => { + suggestion => "Tested-by:", + rationale => "Tested-by and Verified-by are synonyms", + }, + "Okay-ished-by:" => { + suggestion => "Acked-by:", + rationale => "Acked-by is the standard signature tag for recording your approval", + }, + "Acked-for-MFD-by:" => { + suggestion => "Acked-by:", + rationale => "Acked-by is the standard signature tag for recording your approval", + }, + "Reviewed-off-by:" => { + suggestion => "Reviewed-by:", + rationale => "Reviewed-by is the standard signature tag for recording your approval", + }, + "Proposed-by:" => { + suggestion => "Suggested-by:", + rationale => "Proposing changes is same as suggesting changes, so Suggested-by seems perfectly fine", + }, + "Fixed-by:" => { + suggestion => "Co-developed-by:", + rationale => "Fixing bug is a part of Software Development, so 'Co-developed-by' is perfectly fine, even if contributor did not create code", + }, + "Pointed-out-by:" => { + suggestion => "Suggested-by:", + rationale => "Pointing out certain changes is synonymous to suggesting changes, so Suggested-by seems perfectly fine", + }, + "Pointed-at-by:" => { + suggestion => "Suggested-by:", + rationale => "Pointing at certain changes is synonymous to suggesting changes, so Suggested-by seems perfectly fine", + }, + "Suggestions-by:" => { + suggestion => "Suggested-by:", + rationale => "Suggested-by is the standard signature tag for acknowledging user for their suggestions", + }, + "Generated-by:" => { + suggestion => "remove", + rationale => "Signature tags are used to acknowledge users for their contributions. It is advised to describe about tools in commit description instead", + }, + "Celebrated-by:" => { + suggestion => "remove", + rationale => "Signature tags are used to acknowledge users for their contributions. This tag may not be required at all", + }, +); + our @typeListMisordered = ( qr{char\s+(?:un)?signed}, qr{int\s+(?:(?:un)?signed\s+)?short\s}, @@ -2773,8 +2848,30 @@ sub process { my $ucfirst_sign_off = ucfirst(lc($sign_off)); if ($sign_off !~ /$signature_tags/) { - WARN("BAD_SIGN_OFF", - "Non-standard signature: $sign_off\n" . $herecurr); + my $suggested_signature = ""; + my $rationale = ""; + if (exists($standard_signature_fix{$sign_off})) { + $suggested_signature = $standard_signature_fix{$sign_off}{'suggestion'}; + $rationale = $standard_signature_fix{$sign_off}{'rationale'}; + } + if ($suggested_signature eq "") { + WARN("BAD_SIGN_OFF", + "Non-standard signature: $sign_off\n" . $herecurr); + } + elsif ($suggested_signature eq "remove") { + if (WARN("BAD_SIGN_OFF", + "Non-standard signature: $sign_off. Please consider removing this signature tag. $rationale\n" . $herecurr) && + $fix) { + fix_delete_line($fixlinenr, $rawline); + } + } + else { + if (WARN("BAD_SIGN_OFF", + "Non-standard signature: $sign_off. Please use '$suggested_signature' instead. $rationale\n" . $herecurr) && + $fix) { + $fixed[$fixlinenr] =~ s/$sign_off/$suggested_signature/; + } + } } if (defined $space_before && $space_before ne "") { if (WARN("BAD_SIGN_OFF", -- 2.17.1