From cf9601116b123f8a6773078855b62135a2a28ccb Mon Sep 17 00:00:00 2001 From: Michael Frank <55284511+frank-at-adacore@users.noreply.github.com> Date: Fri, 15 Nov 2024 14:15:29 -0500 Subject: [PATCH 1/4] Rewrite GNATmetrics lab to use simpler examples Cleanup formatting as well --- courses/gnatsas/examples/gnatmetric/main.adb | 9 -- .../gnatsas/labs/metric_010_overview.lab.rst | 139 ++++-------------- .../complexity_metrics_example.adb | 0 .../complexity_metrics_example.ads | 0 .../coupling_metrics_dependency.adb | 0 .../coupling_metrics_dependency.ads | 12 +- .../coupling_metrics_example.adb | 0 .../coupling_metrics_example.ads | 3 +- .../labs/metric_010_overview/default.gpr | 8 + .../line_metrics_example.adb | 0 .../line_metrics_example.ads | 0 .../gnatsas/labs/metric_010_overview/main.adb | 18 +++ .../syntax_metrics_example.adb | 9 +- .../syntax_metrics_example.ads | 0 14 files changed, 67 insertions(+), 131 deletions(-) delete mode 100644 courses/gnatsas/examples/gnatmetric/main.adb rename courses/gnatsas/{examples/gnatmetric => labs/metric_010_overview}/complexity_metrics_example.adb (100%) rename courses/gnatsas/{examples/gnatmetric => labs/metric_010_overview}/complexity_metrics_example.ads (100%) rename courses/gnatsas/{examples/gnatmetric => labs/metric_010_overview}/coupling_metrics_dependency.adb (100%) rename courses/gnatsas/{examples/gnatmetric => labs/metric_010_overview}/coupling_metrics_dependency.ads (52%) rename courses/gnatsas/{examples/gnatmetric => labs/metric_010_overview}/coupling_metrics_example.adb (100%) rename courses/gnatsas/{examples/gnatmetric => labs/metric_010_overview}/coupling_metrics_example.ads (61%) create mode 100644 courses/gnatsas/labs/metric_010_overview/default.gpr rename courses/gnatsas/{examples/gnatmetric => labs/metric_010_overview}/line_metrics_example.adb (100%) rename courses/gnatsas/{examples/gnatmetric => labs/metric_010_overview}/line_metrics_example.ads (100%) create mode 100644 courses/gnatsas/labs/metric_010_overview/main.adb rename courses/gnatsas/{examples/gnatmetric => labs/metric_010_overview}/syntax_metrics_example.adb (63%) rename courses/gnatsas/{examples/gnatmetric => labs/metric_010_overview}/syntax_metrics_example.ads (100%) diff --git a/courses/gnatsas/examples/gnatmetric/main.adb b/courses/gnatsas/examples/gnatmetric/main.adb deleted file mode 100644 index 607ba3d63..000000000 --- a/courses/gnatsas/examples/gnatmetric/main.adb +++ /dev/null @@ -1,9 +0,0 @@ -with Coupling_Metrics_Dependency; -use Coupling_Metrics_Dependency; -with Coupling_Metrics_Example; -procedure Main is - A : constant Record_T := Set (1, 2); - B : constant Record_T := Set (30, 40); -begin - Coupling_Metrics_Example.Example (A, B); -end Main; diff --git a/courses/gnatsas/labs/metric_010_overview.lab.rst b/courses/gnatsas/labs/metric_010_overview.lab.rst index b83030b60..7bb024c60 100644 --- a/courses/gnatsas/labs/metric_010_overview.lab.rst +++ b/courses/gnatsas/labs/metric_010_overview.lab.rst @@ -2,14 +2,9 @@ GNATmetric Lab Setup ---------------------- -* Copy the :filename:`tutorial` folder from the course materials location +* Copy the :filename:`metric_010_overview` folder from the course materials location -* Contents of the tutorial folder: - - * :filename:`sdc.gpr` - project file - * :filename:`common` - source directory - * :filename:`struct` - source directory - * :filename:`obj` - object file (and metrics results) directory + * This folder contains a project file (:filename:`default.gpr`) and some Ada source files * From a command prompt, type :command:`gnatmetric --help` to verify your path is set correctly @@ -20,9 +15,9 @@ GNATmetric Lab Setup GNATmetric Lab - GUI Part 1 ----------------------------- -* Use :toolname:`GNAT Studio` to open the project :filename:`sdc.gpr` +* Use :toolname:`GNAT Studio` to open the project :filename:`default.gpr` -* Select :filename:`instructions.adb` in the :filename:`struct` folder +* Open :filename:`line_metrics_example.adb` * Perform metrics analysis to get all line metrics on this file @@ -31,41 +26,19 @@ GNATmetric Lab - GUI Part 1 .. container:: animate 1- - Question 1 - -.. container:: columns - - .. container:: column - - .. container:: animate 1- - - * How many lines in the file? In subprogram :ada:`Process`? - - .. container:: column + * Question 1: How many lines in the file? In subprogram :ada:`Example`? - .. container:: animate 2- - - 59 lines in the file +.. container:: animate 2- - 20 lines in Process + 19 lines in the file, 8 lines in :ada:`Example` .. container:: animate 3- - Question 2 - -.. container:: columns - - .. container:: column - - .. container:: animate 3- + * Question 2: Is there any information for the package spec? - * Is there any information for the package spec? +.. container:: animate 4- - .. container:: column - - .. container:: animate 4- - - No - :menu:`Current File` means actual file, not package + No - :menu:`Current File` means actual file, not package ----------------------------- GNATmetric Lab - GUI Part 2 @@ -80,41 +53,19 @@ Perform metrics analysis to get all complexity metrics in the project .. container:: animate 3- - Question 1 - -.. container:: columns - - .. container:: column - - .. container:: animate 3- + * Question 1: What is the average complexity for project? :ada:`complexity_metrics_example.adb`? - * What is the average complexity for the project? :ada:`stack.adb`? +.. container:: animate 4- - .. container:: column - - .. container:: animate 4- - - 2.3 - - 1.7 + 1.3 for the project, 2 for the file .. container:: animate 5- - Question 2 - -.. container:: columns - - .. container:: column + * Question 2: Which file has an statement complexity of 1.5? - .. container:: animate 5- +.. container:: animate 6- - * Which file has an essential complexity of 1? - - .. container:: column - - .. container:: animate 6- - - :filename:`sdc.adb` + :filename:`line_metrics_example.adb` ----------------------------- GNATmetric Lab - CLI Part 1 @@ -122,49 +73,25 @@ GNATmetric Lab - CLI Part 1 * Use the command line to generate syntax elements metrics for the project - :command:`gnatmetric -Psdc.gpr -U --syntax-all` + :command:`gnatmetric -Pdefault.gpr -U --syntax-all` .. container:: animate 1- - Question 1 - -.. container:: columns - - .. container:: column - - .. container:: animate 1- + * Question 1: How many total statements in the project? Declarations? - * How many total statements and declarations in the project? - - .. container:: column - - .. container:: animate 2- - - Statements - 160 +.. container:: animate 2- - Declarations - 195 + 16 statements, 70 declarations .. container:: animate 3- - Question 2 - -.. container:: columns + * Question 2: What are the number of statements and declarations for :ada:`From_String` in package :ada:`Syntax_Metrics_Example`? - .. container:: column +.. container:: animate 4- - .. container:: animate 3- + 3 statements, 4 declarations - * What are the number of statements and declarations for procedure :ada:`Push` in package :ada:`Stack`? - - .. container:: column - - .. container:: animate 4- - - Statements - 5 - - Declarations - 2 - - You need to open the file ``obj\stack.adb.metrix`` to get the data + You need to open the file ``obj\syntax_metrics_example.adb.metrix`` to get the data ----------------------------- GNATmetric Lab - CLI Part 2 @@ -174,22 +101,12 @@ Generate a local version of the combined XML metrics file for coupling metrics w .. container:: animate 2- - ``gnatmetric -Psdc.gpr -U --coupling-all --no-text-output --xml-file-name=.\local.xml`` + ``gnatmetric -Pdefault.gpr -U --coupling-all --no-text-output --xml-file-name=.\local.xml`` .. container:: animate 3- - Question - -.. container:: columns - - .. container:: column - - .. container:: animate 3- - - * How many total lines in the generated XML file? - - .. container:: column + * Question: How many total lines in the generated XML file? - .. container:: animate 4- +.. container:: animate 4- - 118 + 100 diff --git a/courses/gnatsas/examples/gnatmetric/complexity_metrics_example.adb b/courses/gnatsas/labs/metric_010_overview/complexity_metrics_example.adb similarity index 100% rename from courses/gnatsas/examples/gnatmetric/complexity_metrics_example.adb rename to courses/gnatsas/labs/metric_010_overview/complexity_metrics_example.adb diff --git a/courses/gnatsas/examples/gnatmetric/complexity_metrics_example.ads b/courses/gnatsas/labs/metric_010_overview/complexity_metrics_example.ads similarity index 100% rename from courses/gnatsas/examples/gnatmetric/complexity_metrics_example.ads rename to courses/gnatsas/labs/metric_010_overview/complexity_metrics_example.ads diff --git a/courses/gnatsas/examples/gnatmetric/coupling_metrics_dependency.adb b/courses/gnatsas/labs/metric_010_overview/coupling_metrics_dependency.adb similarity index 100% rename from courses/gnatsas/examples/gnatmetric/coupling_metrics_dependency.adb rename to courses/gnatsas/labs/metric_010_overview/coupling_metrics_dependency.adb diff --git a/courses/gnatsas/examples/gnatmetric/coupling_metrics_dependency.ads b/courses/gnatsas/labs/metric_010_overview/coupling_metrics_dependency.ads similarity index 52% rename from courses/gnatsas/examples/gnatmetric/coupling_metrics_dependency.ads rename to courses/gnatsas/labs/metric_010_overview/coupling_metrics_dependency.ads index d8f447a35..474a4af65 100644 --- a/courses/gnatsas/examples/gnatmetric/coupling_metrics_dependency.ads +++ b/courses/gnatsas/labs/metric_010_overview/coupling_metrics_dependency.ads @@ -1,9 +1,15 @@ package Coupling_Metrics_Dependency is type Record_T is tagged private; - function Set (A, B : Integer) return Record_T; - function Get (A : Record_T) return Integer; - function Add (A, B : Record_T) return Record_T; + function Set + (A, B : Integer) + return Record_T; + function Get + (A : Record_T) + return Integer; + function Add + (A, B : Record_T) + return Record_T; private type Record_T is tagged record diff --git a/courses/gnatsas/examples/gnatmetric/coupling_metrics_example.adb b/courses/gnatsas/labs/metric_010_overview/coupling_metrics_example.adb similarity index 100% rename from courses/gnatsas/examples/gnatmetric/coupling_metrics_example.adb rename to courses/gnatsas/labs/metric_010_overview/coupling_metrics_example.adb diff --git a/courses/gnatsas/examples/gnatmetric/coupling_metrics_example.ads b/courses/gnatsas/labs/metric_010_overview/coupling_metrics_example.ads similarity index 61% rename from courses/gnatsas/examples/gnatmetric/coupling_metrics_example.ads rename to courses/gnatsas/labs/metric_010_overview/coupling_metrics_example.ads index 8efe827e7..15b284672 100644 --- a/courses/gnatsas/examples/gnatmetric/coupling_metrics_example.ads +++ b/courses/gnatsas/labs/metric_010_overview/coupling_metrics_example.ads @@ -1,5 +1,4 @@ -with Coupling_Metrics_Dependency; -use Coupling_Metrics_Dependency; +with Coupling_Metrics_Dependency; use Coupling_Metrics_Dependency; package Coupling_Metrics_Example is procedure Example (L, R : Record_T); diff --git a/courses/gnatsas/labs/metric_010_overview/default.gpr b/courses/gnatsas/labs/metric_010_overview/default.gpr new file mode 100644 index 000000000..a186b40c8 --- /dev/null +++ b/courses/gnatsas/labs/metric_010_overview/default.gpr @@ -0,0 +1,8 @@ +project Default is + + for Source_Dirs use ("."); + for Object_Dir use "obj"; + for Main use ("main.adb"); + +end Default; + diff --git a/courses/gnatsas/examples/gnatmetric/line_metrics_example.adb b/courses/gnatsas/labs/metric_010_overview/line_metrics_example.adb similarity index 100% rename from courses/gnatsas/examples/gnatmetric/line_metrics_example.adb rename to courses/gnatsas/labs/metric_010_overview/line_metrics_example.adb diff --git a/courses/gnatsas/examples/gnatmetric/line_metrics_example.ads b/courses/gnatsas/labs/metric_010_overview/line_metrics_example.ads similarity index 100% rename from courses/gnatsas/examples/gnatmetric/line_metrics_example.ads rename to courses/gnatsas/labs/metric_010_overview/line_metrics_example.ads diff --git a/courses/gnatsas/labs/metric_010_overview/main.adb b/courses/gnatsas/labs/metric_010_overview/main.adb new file mode 100644 index 000000000..e2ed99d1f --- /dev/null +++ b/courses/gnatsas/labs/metric_010_overview/main.adb @@ -0,0 +1,18 @@ +with Coupling_Metrics_Dependency; use Coupling_Metrics_Dependency; + +with Coupling_Metrics_Example; +with Complexity_Metrics_Example; +with Line_Metrics_Example; +with Syntax_Metrics_Example; + +procedure Main is + Coupling_Object_A : constant Record_T := Set (1, 2); + Coupling_Object_B : constant Record_T := Set (30, 40); + Complexity_Object : String := "Hello World"; + Syntax_Object : Syntax_Metrics_Example.String_T; +begin + Coupling_Metrics_Example.Example (Coupling_Object_A, Coupling_Object_B); + Complexity_Metrics_Example.Example (Complexity_Object); + Line_Metrics_Example.Example ("Hello", "World"); + Syntax_Object := Syntax_Metrics_Example.From_String ("Hello"); +end Main; diff --git a/courses/gnatsas/examples/gnatmetric/syntax_metrics_example.adb b/courses/gnatsas/labs/metric_010_overview/syntax_metrics_example.adb similarity index 63% rename from courses/gnatsas/examples/gnatmetric/syntax_metrics_example.adb rename to courses/gnatsas/labs/metric_010_overview/syntax_metrics_example.adb index 0124b3a04..3bf12c78b 100644 --- a/courses/gnatsas/examples/gnatmetric/syntax_metrics_example.adb +++ b/courses/gnatsas/labs/metric_010_overview/syntax_metrics_example.adb @@ -2,19 +2,16 @@ package body Syntax_Metrics_Example is function "&" (L, R : String_T) - return String_T is - (From_String (To_String (L) & To_String (R))); + return String_T is (From_String (To_String (L) & To_String (R))); function To_String (S : String_T) - return String is - (S.Text (1 .. S.Length)); + return String is (S.Text (1 .. S.Length)); function From_String (S : String) return String_T is - L : constant Natural - := Integer'Min (S'Length, Maximum_Length); + L : constant Natural := Integer'Min (S'Length, Maximum_Length); Retval : String_T; begin Retval.Length := L; diff --git a/courses/gnatsas/examples/gnatmetric/syntax_metrics_example.ads b/courses/gnatsas/labs/metric_010_overview/syntax_metrics_example.ads similarity index 100% rename from courses/gnatsas/examples/gnatmetric/syntax_metrics_example.ads rename to courses/gnatsas/labs/metric_010_overview/syntax_metrics_example.ads From 4f87a4eb49170b2a430ef2f10cb4bc4023f431fa Mon Sep 17 00:00:00 2001 From: Michael Frank <55284511+frank-at-adacore@users.noreply.github.com> Date: Mon, 18 Nov 2024 11:03:33 -0500 Subject: [PATCH 2/4] Move GNATcheck getting started lab to lab folder --- courses/gnatsas/examples/gnatcheck/getting_started/README.md | 5 ----- courses/gnatsas/labs/check_020_getting_started.lab.rst | 4 ++-- .../check_020_getting_started}/coding_standard.rules | 0 .../check_020_getting_started}/include/chop.ads | 0 .../check_020_getting_started}/include/phil.ads | 0 .../check_020_getting_started}/include/random_generic.ads | 0 .../check_020_getting_started}/include/room.ads | 0 .../check_020_getting_started}/include/screen.ads | 0 .../check_020_getting_started}/include/society.ads | 0 .../check_020_getting_started}/include/windows.ads | 0 .../check_020_getting_started}/simple.gpr | 0 .../check_020_getting_started}/src/chop.adb | 0 .../check_020_getting_started}/src/diners.adb | 0 .../check_020_getting_started}/src/phil.adb | 0 .../check_020_getting_started}/src/random_generic.adb | 0 .../check_020_getting_started}/src/room.adb | 0 .../check_020_getting_started}/src/screen.adb | 0 .../check_020_getting_started}/src/windows.adb | 0 18 files changed, 2 insertions(+), 7 deletions(-) delete mode 100644 courses/gnatsas/examples/gnatcheck/getting_started/README.md rename courses/gnatsas/{examples/gnatcheck/getting_started => labs/check_020_getting_started}/coding_standard.rules (100%) rename courses/gnatsas/{examples/gnatcheck/getting_started => labs/check_020_getting_started}/include/chop.ads (100%) rename courses/gnatsas/{examples/gnatcheck/getting_started => labs/check_020_getting_started}/include/phil.ads (100%) rename courses/gnatsas/{examples/gnatcheck/getting_started => labs/check_020_getting_started}/include/random_generic.ads (100%) rename courses/gnatsas/{examples/gnatcheck/getting_started => labs/check_020_getting_started}/include/room.ads (100%) rename courses/gnatsas/{examples/gnatcheck/getting_started => labs/check_020_getting_started}/include/screen.ads (100%) rename courses/gnatsas/{examples/gnatcheck/getting_started => labs/check_020_getting_started}/include/society.ads (100%) rename courses/gnatsas/{examples/gnatcheck/getting_started => labs/check_020_getting_started}/include/windows.ads (100%) rename courses/gnatsas/{examples/gnatcheck/getting_started => labs/check_020_getting_started}/simple.gpr (100%) rename courses/gnatsas/{examples/gnatcheck/getting_started => labs/check_020_getting_started}/src/chop.adb (100%) rename courses/gnatsas/{examples/gnatcheck/getting_started => labs/check_020_getting_started}/src/diners.adb (100%) rename courses/gnatsas/{examples/gnatcheck/getting_started => labs/check_020_getting_started}/src/phil.adb (100%) rename courses/gnatsas/{examples/gnatcheck/getting_started => labs/check_020_getting_started}/src/random_generic.adb (100%) rename courses/gnatsas/{examples/gnatcheck/getting_started => labs/check_020_getting_started}/src/room.adb (100%) rename courses/gnatsas/{examples/gnatcheck/getting_started => labs/check_020_getting_started}/src/screen.adb (100%) rename courses/gnatsas/{examples/gnatcheck/getting_started => labs/check_020_getting_started}/src/windows.adb (100%) diff --git a/courses/gnatsas/examples/gnatcheck/getting_started/README.md b/courses/gnatsas/examples/gnatcheck/getting_started/README.md deleted file mode 100644 index 45a9ae870..000000000 --- a/courses/gnatsas/examples/gnatcheck/getting_started/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# GETTING STARTED - -This folder contains the GNATcheck example as it existed in GNATSAS 24.0 -share/examples/gnatcheck folder. This provides a known baseline -project to experiment with GNATcheck. diff --git a/courses/gnatsas/labs/check_020_getting_started.lab.rst b/courses/gnatsas/labs/check_020_getting_started.lab.rst index 05b115a38..f99af4d48 100644 --- a/courses/gnatsas/labs/check_020_getting_started.lab.rst +++ b/courses/gnatsas/labs/check_020_getting_started.lab.rst @@ -2,7 +2,7 @@ GNATcheck Getting Started Lab ------------------------------- -* Copy the :filename:`getting_started` folder from the course materials location +* Copy the :filename:`check_020_getting_started` folder from the course materials location * Contents of the folder: @@ -15,7 +15,7 @@ GNATcheck Getting Started Lab Preparing the Command Line ---------------------------- -1. Open a command prompt window and navigate to the :filename:`getting_started` folder +1. Open a command prompt window and navigate to the :filename:`check_020_getting_started` folder 2. Type :command:`gnatcheck` and press :menu:`Enter` to verify tool is on your path diff --git a/courses/gnatsas/examples/gnatcheck/getting_started/coding_standard.rules b/courses/gnatsas/labs/check_020_getting_started/coding_standard.rules similarity index 100% rename from courses/gnatsas/examples/gnatcheck/getting_started/coding_standard.rules rename to courses/gnatsas/labs/check_020_getting_started/coding_standard.rules diff --git a/courses/gnatsas/examples/gnatcheck/getting_started/include/chop.ads b/courses/gnatsas/labs/check_020_getting_started/include/chop.ads similarity index 100% rename from courses/gnatsas/examples/gnatcheck/getting_started/include/chop.ads rename to courses/gnatsas/labs/check_020_getting_started/include/chop.ads diff --git a/courses/gnatsas/examples/gnatcheck/getting_started/include/phil.ads b/courses/gnatsas/labs/check_020_getting_started/include/phil.ads similarity index 100% rename from courses/gnatsas/examples/gnatcheck/getting_started/include/phil.ads rename to courses/gnatsas/labs/check_020_getting_started/include/phil.ads diff --git a/courses/gnatsas/examples/gnatcheck/getting_started/include/random_generic.ads b/courses/gnatsas/labs/check_020_getting_started/include/random_generic.ads similarity index 100% rename from courses/gnatsas/examples/gnatcheck/getting_started/include/random_generic.ads rename to courses/gnatsas/labs/check_020_getting_started/include/random_generic.ads diff --git a/courses/gnatsas/examples/gnatcheck/getting_started/include/room.ads b/courses/gnatsas/labs/check_020_getting_started/include/room.ads similarity index 100% rename from courses/gnatsas/examples/gnatcheck/getting_started/include/room.ads rename to courses/gnatsas/labs/check_020_getting_started/include/room.ads diff --git a/courses/gnatsas/examples/gnatcheck/getting_started/include/screen.ads b/courses/gnatsas/labs/check_020_getting_started/include/screen.ads similarity index 100% rename from courses/gnatsas/examples/gnatcheck/getting_started/include/screen.ads rename to courses/gnatsas/labs/check_020_getting_started/include/screen.ads diff --git a/courses/gnatsas/examples/gnatcheck/getting_started/include/society.ads b/courses/gnatsas/labs/check_020_getting_started/include/society.ads similarity index 100% rename from courses/gnatsas/examples/gnatcheck/getting_started/include/society.ads rename to courses/gnatsas/labs/check_020_getting_started/include/society.ads diff --git a/courses/gnatsas/examples/gnatcheck/getting_started/include/windows.ads b/courses/gnatsas/labs/check_020_getting_started/include/windows.ads similarity index 100% rename from courses/gnatsas/examples/gnatcheck/getting_started/include/windows.ads rename to courses/gnatsas/labs/check_020_getting_started/include/windows.ads diff --git a/courses/gnatsas/examples/gnatcheck/getting_started/simple.gpr b/courses/gnatsas/labs/check_020_getting_started/simple.gpr similarity index 100% rename from courses/gnatsas/examples/gnatcheck/getting_started/simple.gpr rename to courses/gnatsas/labs/check_020_getting_started/simple.gpr diff --git a/courses/gnatsas/examples/gnatcheck/getting_started/src/chop.adb b/courses/gnatsas/labs/check_020_getting_started/src/chop.adb similarity index 100% rename from courses/gnatsas/examples/gnatcheck/getting_started/src/chop.adb rename to courses/gnatsas/labs/check_020_getting_started/src/chop.adb diff --git a/courses/gnatsas/examples/gnatcheck/getting_started/src/diners.adb b/courses/gnatsas/labs/check_020_getting_started/src/diners.adb similarity index 100% rename from courses/gnatsas/examples/gnatcheck/getting_started/src/diners.adb rename to courses/gnatsas/labs/check_020_getting_started/src/diners.adb diff --git a/courses/gnatsas/examples/gnatcheck/getting_started/src/phil.adb b/courses/gnatsas/labs/check_020_getting_started/src/phil.adb similarity index 100% rename from courses/gnatsas/examples/gnatcheck/getting_started/src/phil.adb rename to courses/gnatsas/labs/check_020_getting_started/src/phil.adb diff --git a/courses/gnatsas/examples/gnatcheck/getting_started/src/random_generic.adb b/courses/gnatsas/labs/check_020_getting_started/src/random_generic.adb similarity index 100% rename from courses/gnatsas/examples/gnatcheck/getting_started/src/random_generic.adb rename to courses/gnatsas/labs/check_020_getting_started/src/random_generic.adb diff --git a/courses/gnatsas/examples/gnatcheck/getting_started/src/room.adb b/courses/gnatsas/labs/check_020_getting_started/src/room.adb similarity index 100% rename from courses/gnatsas/examples/gnatcheck/getting_started/src/room.adb rename to courses/gnatsas/labs/check_020_getting_started/src/room.adb diff --git a/courses/gnatsas/examples/gnatcheck/getting_started/src/screen.adb b/courses/gnatsas/labs/check_020_getting_started/src/screen.adb similarity index 100% rename from courses/gnatsas/examples/gnatcheck/getting_started/src/screen.adb rename to courses/gnatsas/labs/check_020_getting_started/src/screen.adb diff --git a/courses/gnatsas/examples/gnatcheck/getting_started/src/windows.adb b/courses/gnatsas/labs/check_020_getting_started/src/windows.adb similarity index 100% rename from courses/gnatsas/examples/gnatcheck/getting_started/src/windows.adb rename to courses/gnatsas/labs/check_020_getting_started/src/windows.adb From 6804b039ae9fb7733bc3fb50e5ba4bc33f45b68d Mon Sep 17 00:00:00 2001 From: Michael Frank <55284511+frank-at-adacore@users.noreply.github.com> Date: Mon, 18 Nov 2024 11:12:11 -0500 Subject: [PATCH 3/4] Update GNATcheck LKQL lab --- courses/gnatsas/labs/check_040_lkql.lab.rst | 23 +++++++++++++++---- .../check_040_lkql/{prj.gpr => default.gpr} | 4 ++-- 2 files changed, 20 insertions(+), 7 deletions(-) rename courses/gnatsas/labs/check_040_lkql/{prj.gpr => default.gpr} (74%) diff --git a/courses/gnatsas/labs/check_040_lkql.lab.rst b/courses/gnatsas/labs/check_040_lkql.lab.rst index 05127e88b..495fcca3b 100644 --- a/courses/gnatsas/labs/check_040_lkql.lab.rst +++ b/courses/gnatsas/labs/check_040_lkql.lab.rst @@ -16,6 +16,19 @@ To flag those type declarations we must define a criteria list: We're going to see how to express those criteria using LKQL. +----------------- +Example Project +----------------- + +* Copy the :filename:`check_40_lkql` folder from the course materials location + +* Contents of the folder: + + * :filename:`default.gpr` - project file + * :filename:`src` - source directory + + * Contains package :ada:`test_pkg` with some example integer-based definitions (as seen on the next two slides) + --------------------------- Source Code Specification --------------------------- @@ -98,7 +111,7 @@ Step 1 - Flag All Integers 3. Test it out - see what happens when you run the rule:: - gnatcheck -P prj.gpr --rules-dir=. -rules +Renum_for_integer + gnatcheck -P default.gpr --rules-dir=. -rules +Renum_for_integer * This gives us the output:: @@ -184,7 +197,7 @@ Step 4 - Use First Criteria in Rule 2. Test it out - see what happens when you run the rule:: - gnatcheck -P prj.gpr --rules-dir=. -rules +Renum_for_integer + gnatcheck -P default.gpr --rules-dir=. -rules +Renum_for_integer * This gives us the output:: @@ -249,7 +262,7 @@ Step 6 - Improve Types Filter 2. Test it out - see what happens when you run the rule:: - gnatcheck -P prj.gpr --rules-dir=. -rules +Renum_for_integer + gnatcheck -P default.gpr --rules-dir=. -rules +Renum_for_integer * This gives us the output:: @@ -284,7 +297,7 @@ Step 7 - Implement Third Criteria 2. And once again test it out - gnatcheck -P prj.gpr --rules-dir=. -rules +Renum_for_integer + gnatcheck -P default.gpr --rules-dir=. -rules +Renum_for_integer * This gives us the output:: @@ -396,7 +409,7 @@ Final Result * One more run to get the "correct" result - gnatcheck -P prj.gpr --rules-dir=. -rules +Renum_for_integer + gnatcheck -P default.gpr --rules-dir=. -rules +Renum_for_integer * This gives us the output diff --git a/courses/gnatsas/labs/check_040_lkql/prj.gpr b/courses/gnatsas/labs/check_040_lkql/default.gpr similarity index 74% rename from courses/gnatsas/labs/check_040_lkql/prj.gpr rename to courses/gnatsas/labs/check_040_lkql/default.gpr index e16b47427..b734cb5d5 100644 --- a/courses/gnatsas/labs/check_040_lkql/prj.gpr +++ b/courses/gnatsas/labs/check_040_lkql/default.gpr @@ -1,5 +1,5 @@ -project Prj is +project Default is for Source_Dirs use ("src"); for Object_Dir use "obj"; for Main use ("main.adb"); -end Prj; +end Default; From 7f275115c355051556fab5054df84bb993d227e6 Mon Sep 17 00:00:00 2001 From: Michael Frank <55284511+frank-at-adacore@users.noreply.github.com> Date: Mon, 18 Nov 2024 11:19:50 -0500 Subject: [PATCH 4/4] Move SAS lab code to where it belongs --- courses/gnatsas/examples/README.md | 6 ------ courses/gnatsas/examples/tutorial/README.md | 5 ----- .../tutorial => labs/sas_060_tutorial}/common/except.ads | 0 .../tutorial => labs/sas_060_tutorial}/common/input.adb | 0 .../tutorial => labs/sas_060_tutorial}/common/input.ads | 0 .../sas_060_tutorial}/common/screen_output.adb | 0 .../sas_060_tutorial}/common/screen_output.ads | 0 .../tutorial => labs/sas_060_tutorial}/common/sdc.adb | 0 .../tutorial => labs/sas_060_tutorial}/common/sdc.ads | 0 .../tutorial => labs/sas_060_tutorial}/common/stack.adb | 0 .../tutorial => labs/sas_060_tutorial}/common/stack.ads | 0 .../{examples/tutorial => labs/sas_060_tutorial}/input.txt | 0 .../{examples/tutorial => labs/sas_060_tutorial}/obj/.empty | 0 .../{examples/tutorial => labs/sas_060_tutorial}/sdc.gpr | 0 .../sas_060_tutorial}/struct/instructions.adb | 0 .../sas_060_tutorial}/struct/instructions.ads | 0 .../tutorial => labs/sas_060_tutorial}/struct/tokens.adb | 0 .../tutorial => labs/sas_060_tutorial}/struct/tokens.ads | 0 .../sas_060_tutorial}/struct/values-operations.adb | 0 .../sas_060_tutorial}/struct/values-operations.ads | 0 .../tutorial => labs/sas_060_tutorial}/struct/values.adb | 0 .../tutorial => labs/sas_060_tutorial}/struct/values.ads | 0 .../{sas_060_tutorial_lab.rst => sas_060_tutorial.rst} | 5 +++-- 23 files changed, 3 insertions(+), 13 deletions(-) delete mode 100644 courses/gnatsas/examples/README.md delete mode 100644 courses/gnatsas/examples/tutorial/README.md rename courses/gnatsas/{examples/tutorial => labs/sas_060_tutorial}/common/except.ads (100%) rename courses/gnatsas/{examples/tutorial => labs/sas_060_tutorial}/common/input.adb (100%) rename courses/gnatsas/{examples/tutorial => labs/sas_060_tutorial}/common/input.ads (100%) rename courses/gnatsas/{examples/tutorial => labs/sas_060_tutorial}/common/screen_output.adb (100%) rename courses/gnatsas/{examples/tutorial => labs/sas_060_tutorial}/common/screen_output.ads (100%) rename courses/gnatsas/{examples/tutorial => labs/sas_060_tutorial}/common/sdc.adb (100%) rename courses/gnatsas/{examples/tutorial => labs/sas_060_tutorial}/common/sdc.ads (100%) rename courses/gnatsas/{examples/tutorial => labs/sas_060_tutorial}/common/stack.adb (100%) rename courses/gnatsas/{examples/tutorial => labs/sas_060_tutorial}/common/stack.ads (100%) rename courses/gnatsas/{examples/tutorial => labs/sas_060_tutorial}/input.txt (100%) rename courses/gnatsas/{examples/tutorial => labs/sas_060_tutorial}/obj/.empty (100%) rename courses/gnatsas/{examples/tutorial => labs/sas_060_tutorial}/sdc.gpr (100%) rename courses/gnatsas/{examples/tutorial => labs/sas_060_tutorial}/struct/instructions.adb (100%) rename courses/gnatsas/{examples/tutorial => labs/sas_060_tutorial}/struct/instructions.ads (100%) rename courses/gnatsas/{examples/tutorial => labs/sas_060_tutorial}/struct/tokens.adb (100%) rename courses/gnatsas/{examples/tutorial => labs/sas_060_tutorial}/struct/tokens.ads (100%) rename courses/gnatsas/{examples/tutorial => labs/sas_060_tutorial}/struct/values-operations.adb (100%) rename courses/gnatsas/{examples/tutorial => labs/sas_060_tutorial}/struct/values-operations.ads (100%) rename courses/gnatsas/{examples/tutorial => labs/sas_060_tutorial}/struct/values.adb (100%) rename courses/gnatsas/{examples/tutorial => labs/sas_060_tutorial}/struct/values.ads (100%) rename courses/gnatsas/{sas_060_tutorial_lab.rst => sas_060_tutorial.rst} (98%) diff --git a/courses/gnatsas/examples/README.md b/courses/gnatsas/examples/README.md deleted file mode 100644 index 1ac85925e..000000000 --- a/courses/gnatsas/examples/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# Overview - -This folder contains examples to be used in teaching the tools -included in the GNAT Static Analysis Suite. These examples are usually -referenced somewhere in the teaching material, but may also include -topics that are not yet, or once were, covered. diff --git a/courses/gnatsas/examples/tutorial/README.md b/courses/gnatsas/examples/tutorial/README.md deleted file mode 100644 index 3be9f4e99..000000000 --- a/courses/gnatsas/examples/tutorial/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# TUTORIAL - -This folder contains the tutorial example as it existed in GNAT Pro 24.0 -share/examples/gnatstudio/tutorial folder. This makes a good example -project for all of the tools in the GNAT Static Analysis Suite. diff --git a/courses/gnatsas/examples/tutorial/common/except.ads b/courses/gnatsas/labs/sas_060_tutorial/common/except.ads similarity index 100% rename from courses/gnatsas/examples/tutorial/common/except.ads rename to courses/gnatsas/labs/sas_060_tutorial/common/except.ads diff --git a/courses/gnatsas/examples/tutorial/common/input.adb b/courses/gnatsas/labs/sas_060_tutorial/common/input.adb similarity index 100% rename from courses/gnatsas/examples/tutorial/common/input.adb rename to courses/gnatsas/labs/sas_060_tutorial/common/input.adb diff --git a/courses/gnatsas/examples/tutorial/common/input.ads b/courses/gnatsas/labs/sas_060_tutorial/common/input.ads similarity index 100% rename from courses/gnatsas/examples/tutorial/common/input.ads rename to courses/gnatsas/labs/sas_060_tutorial/common/input.ads diff --git a/courses/gnatsas/examples/tutorial/common/screen_output.adb b/courses/gnatsas/labs/sas_060_tutorial/common/screen_output.adb similarity index 100% rename from courses/gnatsas/examples/tutorial/common/screen_output.adb rename to courses/gnatsas/labs/sas_060_tutorial/common/screen_output.adb diff --git a/courses/gnatsas/examples/tutorial/common/screen_output.ads b/courses/gnatsas/labs/sas_060_tutorial/common/screen_output.ads similarity index 100% rename from courses/gnatsas/examples/tutorial/common/screen_output.ads rename to courses/gnatsas/labs/sas_060_tutorial/common/screen_output.ads diff --git a/courses/gnatsas/examples/tutorial/common/sdc.adb b/courses/gnatsas/labs/sas_060_tutorial/common/sdc.adb similarity index 100% rename from courses/gnatsas/examples/tutorial/common/sdc.adb rename to courses/gnatsas/labs/sas_060_tutorial/common/sdc.adb diff --git a/courses/gnatsas/examples/tutorial/common/sdc.ads b/courses/gnatsas/labs/sas_060_tutorial/common/sdc.ads similarity index 100% rename from courses/gnatsas/examples/tutorial/common/sdc.ads rename to courses/gnatsas/labs/sas_060_tutorial/common/sdc.ads diff --git a/courses/gnatsas/examples/tutorial/common/stack.adb b/courses/gnatsas/labs/sas_060_tutorial/common/stack.adb similarity index 100% rename from courses/gnatsas/examples/tutorial/common/stack.adb rename to courses/gnatsas/labs/sas_060_tutorial/common/stack.adb diff --git a/courses/gnatsas/examples/tutorial/common/stack.ads b/courses/gnatsas/labs/sas_060_tutorial/common/stack.ads similarity index 100% rename from courses/gnatsas/examples/tutorial/common/stack.ads rename to courses/gnatsas/labs/sas_060_tutorial/common/stack.ads diff --git a/courses/gnatsas/examples/tutorial/input.txt b/courses/gnatsas/labs/sas_060_tutorial/input.txt similarity index 100% rename from courses/gnatsas/examples/tutorial/input.txt rename to courses/gnatsas/labs/sas_060_tutorial/input.txt diff --git a/courses/gnatsas/examples/tutorial/obj/.empty b/courses/gnatsas/labs/sas_060_tutorial/obj/.empty similarity index 100% rename from courses/gnatsas/examples/tutorial/obj/.empty rename to courses/gnatsas/labs/sas_060_tutorial/obj/.empty diff --git a/courses/gnatsas/examples/tutorial/sdc.gpr b/courses/gnatsas/labs/sas_060_tutorial/sdc.gpr similarity index 100% rename from courses/gnatsas/examples/tutorial/sdc.gpr rename to courses/gnatsas/labs/sas_060_tutorial/sdc.gpr diff --git a/courses/gnatsas/examples/tutorial/struct/instructions.adb b/courses/gnatsas/labs/sas_060_tutorial/struct/instructions.adb similarity index 100% rename from courses/gnatsas/examples/tutorial/struct/instructions.adb rename to courses/gnatsas/labs/sas_060_tutorial/struct/instructions.adb diff --git a/courses/gnatsas/examples/tutorial/struct/instructions.ads b/courses/gnatsas/labs/sas_060_tutorial/struct/instructions.ads similarity index 100% rename from courses/gnatsas/examples/tutorial/struct/instructions.ads rename to courses/gnatsas/labs/sas_060_tutorial/struct/instructions.ads diff --git a/courses/gnatsas/examples/tutorial/struct/tokens.adb b/courses/gnatsas/labs/sas_060_tutorial/struct/tokens.adb similarity index 100% rename from courses/gnatsas/examples/tutorial/struct/tokens.adb rename to courses/gnatsas/labs/sas_060_tutorial/struct/tokens.adb diff --git a/courses/gnatsas/examples/tutorial/struct/tokens.ads b/courses/gnatsas/labs/sas_060_tutorial/struct/tokens.ads similarity index 100% rename from courses/gnatsas/examples/tutorial/struct/tokens.ads rename to courses/gnatsas/labs/sas_060_tutorial/struct/tokens.ads diff --git a/courses/gnatsas/examples/tutorial/struct/values-operations.adb b/courses/gnatsas/labs/sas_060_tutorial/struct/values-operations.adb similarity index 100% rename from courses/gnatsas/examples/tutorial/struct/values-operations.adb rename to courses/gnatsas/labs/sas_060_tutorial/struct/values-operations.adb diff --git a/courses/gnatsas/examples/tutorial/struct/values-operations.ads b/courses/gnatsas/labs/sas_060_tutorial/struct/values-operations.ads similarity index 100% rename from courses/gnatsas/examples/tutorial/struct/values-operations.ads rename to courses/gnatsas/labs/sas_060_tutorial/struct/values-operations.ads diff --git a/courses/gnatsas/examples/tutorial/struct/values.adb b/courses/gnatsas/labs/sas_060_tutorial/struct/values.adb similarity index 100% rename from courses/gnatsas/examples/tutorial/struct/values.adb rename to courses/gnatsas/labs/sas_060_tutorial/struct/values.adb diff --git a/courses/gnatsas/examples/tutorial/struct/values.ads b/courses/gnatsas/labs/sas_060_tutorial/struct/values.ads similarity index 100% rename from courses/gnatsas/examples/tutorial/struct/values.ads rename to courses/gnatsas/labs/sas_060_tutorial/struct/values.ads diff --git a/courses/gnatsas/sas_060_tutorial_lab.rst b/courses/gnatsas/sas_060_tutorial.rst similarity index 98% rename from courses/gnatsas/sas_060_tutorial_lab.rst rename to courses/gnatsas/sas_060_tutorial.rst index d94f76068..0cbb778d8 100644 --- a/courses/gnatsas/sas_060_tutorial_lab.rst +++ b/courses/gnatsas/sas_060_tutorial.rst @@ -70,14 +70,15 @@ Getting Started * This module is a lab-based version of the *GNAT SAS Tutorial* found `here `_ -* Copy the :filename:`tutorial` folder from the course materials location +* Copy the :filename:`sas_060_tutorial` folder from the course materials location -* Contents of the tutorial folder: +* Contents of the folder: * :filename:`sdc.gpr` - project file * :filename:`common` - source directory * :filename:`struct` - source directory * :filename:`obj` - object file (and metrics results) directory + * :filename:`input.txt` - example input for application ---------------------- Starting GNAT Studio