[multiple changes]
2009-05-06 Sergey Rybin <rybin@adacore.com> * gnat_ugn.texi: Add subsection for Exits_From_Conditional_Loops rule Add formal definition for extra exit point metric 2009-05-06 Pascal Obry <obry@adacore.com> * adaint.c: Support for setting attributes on unicode filename on Windows. From-SVN: r147171
This commit is contained in:
parent
0c020ddef1
commit
35117aa8a9
|
@ -1,3 +1,13 @@
|
||||||
|
2009-05-06 Sergey Rybin <rybin@adacore.com>
|
||||||
|
|
||||||
|
* gnat_ugn.texi: Add subsection for Exits_From_Conditional_Loops rule
|
||||||
|
Add formal definition for extra exit point metric
|
||||||
|
|
||||||
|
2009-05-06 Pascal Obry <obry@adacore.com>
|
||||||
|
|
||||||
|
* adaint.c: Support for setting attributes on unicode filename on
|
||||||
|
Windows.
|
||||||
|
|
||||||
2009-05-06 Robert Dewar <dewar@adacore.com>
|
2009-05-06 Robert Dewar <dewar@adacore.com>
|
||||||
|
|
||||||
* sem_warn.adb: Minor reformatting
|
* sem_warn.adb: Minor reformatting
|
||||||
|
|
|
@ -3369,6 +3369,63 @@ __gnat_copy_attribs (char *from, char *to, int mode)
|
||||||
{
|
{
|
||||||
#if defined (VMS) || defined (__vxworks) || defined (__nucleus__)
|
#if defined (VMS) || defined (__vxworks) || defined (__nucleus__)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
#elif defined (_WIN32) && !defined (RTX)
|
||||||
|
TCHAR wfrom [GNAT_MAX_PATH_LEN + 2];
|
||||||
|
TCHAR wto [GNAT_MAX_PATH_LEN + 2];
|
||||||
|
BOOL res;
|
||||||
|
FILETIME fct, flat, flwt;
|
||||||
|
HANDLE hfrom, hto;
|
||||||
|
|
||||||
|
S2WSC (wfrom, from, GNAT_MAX_PATH_LEN + 2);
|
||||||
|
S2WSC (wto, to, GNAT_MAX_PATH_LEN + 2);
|
||||||
|
|
||||||
|
/* retrieve from times */
|
||||||
|
|
||||||
|
hfrom = CreateFile
|
||||||
|
(wfrom, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||||
|
|
||||||
|
if (hfrom == INVALID_HANDLE_VALUE)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
res = GetFileTime (hfrom, &fct, &flat, &flwt);
|
||||||
|
|
||||||
|
CloseHandle (hfrom);
|
||||||
|
|
||||||
|
if (res == 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
/* retrieve from times */
|
||||||
|
|
||||||
|
hto = CreateFile
|
||||||
|
(wto, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||||
|
|
||||||
|
if (hto == INVALID_HANDLE_VALUE)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
res = SetFileTime (hto, NULL, &flat, &flwt);
|
||||||
|
|
||||||
|
CloseHandle (hto);
|
||||||
|
|
||||||
|
if (res == 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
/* Set file attributes in full mode. */
|
||||||
|
|
||||||
|
if (mode == 1)
|
||||||
|
{
|
||||||
|
DWORD attribs = GetFileAttributes (wfrom);
|
||||||
|
|
||||||
|
if (attribs == INVALID_FILE_ATTRIBUTES)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
res = SetFileAttributes (wto, attribs);
|
||||||
|
if (res == 0)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
struct stat fbuf;
|
struct stat fbuf;
|
||||||
struct utimbuf tbuf;
|
struct utimbuf tbuf;
|
||||||
|
|
|
@ -17637,7 +17637,11 @@ Do not consider @code{exit} statements as @code{goto}s when
|
||||||
computing Essential Complexity
|
computing Essential Complexity
|
||||||
|
|
||||||
@item ^--extra-exit-points^/EXTRA_EXIT_POINTS_ON^
|
@item ^--extra-exit-points^/EXTRA_EXIT_POINTS_ON^
|
||||||
Report the extra exit points for subprogram bodies
|
Report the extra exit points for subprogram bodies. As an exit point, this
|
||||||
|
metric counts @code{return} statements and raise statements in case when the
|
||||||
|
raised exception is not handled in the same body. In case of a function this
|
||||||
|
metric subtracts 1 from the number of exit points, because a function body
|
||||||
|
must contain at least one @code{return} statement.
|
||||||
|
|
||||||
@item ^--no-extra-exit-points^/EXTRA_EXIT_POINTS_OFF^
|
@item ^--no-extra-exit-points^/EXTRA_EXIT_POINTS_OFF^
|
||||||
Do not report the extra exit points for subprogram bodies
|
Do not report the extra exit points for subprogram bodies
|
||||||
|
@ -20889,6 +20893,7 @@ used as a parameter of the @option{+R} or @option{-R} options.
|
||||||
* Discriminated_Records::
|
* Discriminated_Records::
|
||||||
* Enumeration_Ranges_In_CASE_Statements::
|
* Enumeration_Ranges_In_CASE_Statements::
|
||||||
* Exceptions_As_Control_Flow::
|
* Exceptions_As_Control_Flow::
|
||||||
|
* Exits_From_Conditional_Loops::
|
||||||
* EXIT_Statements_With_No_Loop_Name::
|
* EXIT_Statements_With_No_Loop_Name::
|
||||||
* Expanded_Loop_Exit_Names::
|
* Expanded_Loop_Exit_Names::
|
||||||
* Explicit_Full_Discrete_Ranges::
|
* Explicit_Full_Discrete_Ranges::
|
||||||
|
@ -20939,6 +20944,7 @@ used as a parameter of the @option{+R} or @option{-R} options.
|
||||||
* Slices::
|
* Slices::
|
||||||
* Unassigned_OUT_Parameters::
|
* Unassigned_OUT_Parameters::
|
||||||
* Uncommented_BEGIN_In_Package_Bodies::
|
* Uncommented_BEGIN_In_Package_Bodies::
|
||||||
|
* Unconditional_Exits::
|
||||||
* Unconstrained_Array_Returns::
|
* Unconstrained_Array_Returns::
|
||||||
* Universal_Ranges::
|
* Universal_Ranges::
|
||||||
* Unnamed_Blocks_And_Loops::
|
* Unnamed_Blocks_And_Loops::
|
||||||
|
@ -21155,6 +21161,20 @@ package body, task body or entry body is not flagged.
|
||||||
|
|
||||||
The rule has no parameters.
|
The rule has no parameters.
|
||||||
|
|
||||||
|
@node Exits_From_Conditional_Loops
|
||||||
|
@subsection @code{Exits_From_Conditional_Loops}
|
||||||
|
@cindex @code{Exits_From_Conditional_Loops} (for @command{gnatcheck})
|
||||||
|
|
||||||
|
@noindent
|
||||||
|
Flag any exit statement if it transfers the control out of a @code{for} loop
|
||||||
|
or a @code{while} loop. This includes cases when the @code{exit} statement
|
||||||
|
applies to a @code{FOR} or @code{while} loop, and cases when it is enclosed
|
||||||
|
in some @code{for} or @code{while} loop, but transfers the control from some
|
||||||
|
outer (inconditional) @code{loop} statement.
|
||||||
|
|
||||||
|
The rule has no parameters.
|
||||||
|
|
||||||
|
|
||||||
@node EXIT_Statements_With_No_Loop_Name
|
@node EXIT_Statements_With_No_Loop_Name
|
||||||
@subsection @code{EXIT_Statements_With_No_Loop_Name}
|
@subsection @code{EXIT_Statements_With_No_Loop_Name}
|
||||||
@cindex @code{EXIT_Statements_With_No_Loop_Name} (for @command{gnatcheck})
|
@cindex @code{EXIT_Statements_With_No_Loop_Name} (for @command{gnatcheck})
|
||||||
|
@ -22253,6 +22273,14 @@ diagnostic message is attached to the line containing the first statement.
|
||||||
|
|
||||||
This rule has no parameters.
|
This rule has no parameters.
|
||||||
|
|
||||||
|
@node Unconditional_Exits
|
||||||
|
@subsection @code{Unconditional_Exits}
|
||||||
|
@cindex @code{Unconditional_Exits} rule (for @command{gnatcheck})
|
||||||
|
|
||||||
|
@noindent
|
||||||
|
Flag unconditional @code{exit} statements.
|
||||||
|
|
||||||
|
This rule has no parameters.
|
||||||
|
|
||||||
@node Unconstrained_Array_Returns
|
@node Unconstrained_Array_Returns
|
||||||
@subsection @code{Unconstrained_Array_Returns}
|
@subsection @code{Unconstrained_Array_Returns}
|
||||||
|
|
Loading…
Reference in New Issue