2323import java .util .Comparator ;
2424import java .util .List ;
2525import java .util .Locale ;
26+ import java .util .Optional ;
2627
2728@ Slf4j
2829@ Mojo (
@@ -94,22 +95,6 @@ public void execute() {
9495
9596 final String [] tableHeadings = showDetails ? detailedTableHeadings : simpleTableHeadings ;
9697
97- GitLogReader gitLogReader = new GitLogReader ();
98- String projectBaseDir = project .getBasedir ().getPath ();
99- String parentOfGitDir = gitLogReader .getGitDir (project .getBasedir ()).getParentFile ().getPath ();
100- log .info ("Project Base Dir: {} " , projectBaseDir );
101- log .info ("Parent of Git Dir: {}" , parentOfGitDir );
102-
103- if (!projectBaseDir .equals (parentOfGitDir )) {
104- log .warn ("Project Base Directory does not match Git Parent Directory" );
105- return ;
106- }
107-
108- CostBenefitCalculator costBenefitCalculator = new CostBenefitCalculator ();
109- List <RankedDisharmony > rankedDisharmonies = costBenefitCalculator .calculateCostBenefitValues (projectBaseDir );
110-
111- rankedDisharmonies .sort (Comparator .comparing (RankedDisharmony ::getPriority ).reversed ());
112-
11398 String filename = getOutputName () + ".html" ;
11499
115100 log .info ("Generating {} for {} - {}" , filename , projectName , projectVersion );
@@ -122,10 +107,10 @@ public void execute() {
122107 StringBuilder stringBuilder = new StringBuilder ();
123108 stringBuilder .append (
124109 "<html xmlns=\" http://www.w3.org/1999/xhtml\" xml:lang=\" en\" lang=\" en\" >\n " +
125- " <head>\n " +
126- " <meta charset=\" UTF-8\" />\n " +
127- " <meta name=\" viewport\" content=\" width=device-width, initial-scale=1.0\" />\n " +
128- " <meta name=\" generator\" content=\" Apache Maven Doxia Site Renderer 1.9.2\" />" );
110+ " <head>\n " +
111+ " <meta charset=\" UTF-8\" />\n " +
112+ " <meta name=\" viewport\" content=\" width=device-width, initial-scale=1.0\" />\n " +
113+ " <meta name=\" generator\" content=\" Apache Maven Doxia Site Renderer 1.9.2\" />" );
129114
130115
131116 stringBuilder .append ("<title>Refactor First Report for " ).append (projectName ).append (" " ).append (projectVersion ).append (" </title>" );
@@ -166,6 +151,66 @@ public void execute() {
166151 stringBuilder .append ("<section>\n " + "<h2><a name=\" God_Class_Report_for_Apache_Tobago_5.0.0-SNAPSHOT\" ></a>God Class Report for " )
167152 .append (projectName ).append (" " ).append (projectVersion ).append ("</h2>\n " ).append ("<div id=\" series_chart_div\" ></div>" );
168153
154+ GitLogReader gitLogReader = new GitLogReader ();
155+ String projectBaseDir = project .getBasedir ().getPath ();
156+ Optional <File > optionalGitDir = Optional .ofNullable (gitLogReader .getGitDir (project .getBasedir ()));
157+ File gitDir ;
158+
159+ if (optionalGitDir .isPresent ()) {
160+ gitDir = optionalGitDir .get ();
161+ } else {
162+ log .info ("Done! No Git repository found! Please initialize a Git repository and perform an initial commit." );
163+ stringBuilder .append ("No Git repository found in project " ).append (projectName ).append (" " ).append (projectVersion ).append (". " );
164+ stringBuilder .append ("Please initialize a Git repository and perform an initial commit." );
165+ stringBuilder .append ("</div>\n " +
166+ " </div>\n " +
167+ " <div class=\" clear\" >\n " +
168+ " <hr/>\n " +
169+ " </div>\n " +
170+ " <div id=\" footer\" >\n " +
171+ " <div class=\" xright\" >\n " +
172+ " Copyright © 2002–2021<a href=\" https://www.apache.org/\" >The Apache Software Foundation</a>.\n " +
173+ ". </div>\n " +
174+ " <div class=\" clear\" >\n " +
175+ " <hr/>\n " +
176+ " </div>\n " +
177+ " </div>\n " +
178+ " </body>\n " +
179+ "</html>\n " );
180+ writeReportToDisk (filename , stringBuilder );
181+ return ;
182+ }
183+
184+ String parentOfGitDir = gitDir .getParentFile ().getPath ();
185+ log .info ("Project Base Dir: {} " , projectBaseDir );
186+ log .info ("Parent of Git Dir: {}" , parentOfGitDir );
187+
188+ if (!projectBaseDir .equals (parentOfGitDir )) {
189+ log .warn ("Project Base Directory does not match Git Parent Directory" );
190+ stringBuilder .append ("Project Base Directory does not match Git Parent Directory. Please refer to the report at the root of the site directory." );
191+ stringBuilder .append ("</div>\n " +
192+ " </div>\n " +
193+ " <div class=\" clear\" >\n " +
194+ " <hr/>\n " +
195+ " </div>\n " +
196+ " <div id=\" footer\" >\n " +
197+ " <div class=\" xright\" >\n " +
198+ " Copyright © 2002–2021<a href=\" https://www.apache.org/\" >The Apache Software Foundation</a>.\n " +
199+ ". </div>\n " +
200+ " <div class=\" clear\" >\n " +
201+ " <hr/>\n " +
202+ " </div>\n " +
203+ " </div>\n " +
204+ " </body>\n " +
205+ "</html>\n " );
206+ return ;
207+ }
208+
209+ CostBenefitCalculator costBenefitCalculator = new CostBenefitCalculator ();
210+ List <RankedDisharmony > rankedDisharmonies = costBenefitCalculator .calculateCostBenefitValues (projectBaseDir );
211+
212+ rankedDisharmonies .sort (Comparator .comparing (RankedDisharmony ::getPriority ).reversed ());
213+
169214 if (rankedDisharmonies .isEmpty ()) {
170215 stringBuilder .append ("Congratulations! " ).append (projectName ).append (" " ).append (projectVersion ).append (" has no God classes!" );
171216 log .info ("Done! No God classes found!" );
0 commit comments