From: "Laszlo Ersek" <lersek@redhat.com>
To: devel@edk2.groups.io, bret.barkelew@microsoft.com
Subject: Re: [edk2-devel] ECC: main function entry point in host-based unit tests
Date: Fri, 25 Sep 2020 09:53:53 +0200 [thread overview]
Message-ID: <e98b0db5-1737-9389-0b56-7f1e39b7e57b@redhat.com> (raw)
In-Reply-To: <MW4PR21MB18576EABAC4F07663BB24192EF360@MW4PR21MB1857.namprd21.prod.outlook.com>
On 09/25/20 04:38, Bret Barkelew via groups.io wrote:
> ERROR - EFI coding style error
> ERROR - *Error code: 7001
> ERROR - *There should be no use of int, unsigned, char, void, long in any .c, .h or .asl files
> ERROR - *file: //home/corthon/_uefi/edk2_qemu_ci/edk2/MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePolicyUnitTest.c
> ERROR - *Line number: 763
> ERROR - *[main] Return type int
> ERROR -
> ERROR - EFI coding style error
> ERROR - *Error code: 8006
> ERROR - *Function name does not follow the rules: 1. First character should be upper case 2. Must contain lower case characters 3. No white space characters
> ERROR - *file: //home/corthon/_uefi/edk2_qemu_ci/edk2/MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePolicyUnitTest.c
> ERROR - *Line number: 2253
> ERROR - *The function name [main] does not follow the rules
>
> Currently, the host-based unit tests are using a standard C entry point:
> int
> main ()
"int main()" is not the standard C entry point. Two prototypes for main() are standard:
int main(void);
int main(int argc, char *argv[]);
where
- "int" may be replaced with a typedef name that's defined as "int",
- and *argv[] may be spelled as **argv too.
... Of course, this doesn't address your main point.
ECC#7001 can be suppressed perhaps if you use INT32 rather than "int".
ECC#8006 can be suppressed perhaps with a macro that expands to "main".
Another -- likely better -- idea:
(1) replace the current main() function prototype with
INT32
UnitTestMain (
IN INT32 ArgC,
IN UINT8 **ArgV
);
(2) Introduce
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/UnitTestMain.h
such that it only declare the above prototype.
(3) Introduce
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/UnitTestEntry.c
with the following contents:
#include "UnitTestMain.h"
int main(int argc, char **argv)
{
return UnitTestMain(argc, (UINT8 **)argv);
}
(4) List both new source files in
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/VariablePolicyUnitTest.inf
in the [Sources] section.
(5) Add
MdeModulePkg/Library/VariablePolicyLib/VariablePolicyUnitTest/UnitTestEntry.c
to "EccCheck.IgnoreFiles" in "MdeModulePkg/MdeModulePkg.ci.yaml".
Thanks
Laszlo
>
> That’s going to break both of these.
>
> Another thing to override/figure out for host-based tests
>
> - Bret
>
>
>
>
>
>
>
prev parent reply other threads:[~2020-09-25 7:54 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-25 2:38 ECC: main function entry point in host-based unit tests Bret Barkelew
2020-09-25 7:24 ` 回复: [edk2-devel] " gaoliming
2020-09-25 7:53 ` Laszlo Ersek [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e98b0db5-1737-9389-0b56-7f1e39b7e57b@redhat.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox