Commit 4b290056 authored by Carlos Alfredo Yeverino Rodriguez's avatar Carlos Alfredo Yeverino Rodriguez
Browse files

fix sonarQube code smells

parent 8dffa375
Pipeline #105461 passed with stages
in 4 minutes and 6 seconds
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<artifactId>cnnarch-caffe2-generator</artifactId> <artifactId>cnnarch-caffe2-generator</artifactId>
<version>0.2.8-SNAPSHOT</version> <version>0.2.8-SNAPSHOT</version>
<!-- == PROJECT DEPENDENCIES ============================================= --> <!-- == PROJECT DEPENDENCIES ========================================= ==== -->
<properties> <properties>
......
...@@ -20,14 +20,12 @@ ...@@ -20,14 +20,12 @@
*/ */
package de.monticore.lang.monticar.cnnarch.caffe2generator; package de.monticore.lang.monticar.cnnarch.caffe2generator;
import de.monticore.lang.monticar.cnnarch._symboltable.ArchTypeSymbol;
import de.monticore.lang.monticar.cnnarch._symboltable.ArchitectureElementSymbol; import de.monticore.lang.monticar.cnnarch._symboltable.ArchitectureElementSymbol;
import de.monticore.lang.monticar.cnnarch._symboltable.LayerSymbol; import de.monticore.lang.monticar.cnnarch._symboltable.LayerSymbol;
import de.monticore.lang.monticar.cnnarch.predefined.AllPredefinedLayers; import de.monticore.lang.monticar.cnnarch.predefined.AllPredefinedLayers;
import de.se_rwth.commons.logging.Log; import de.se_rwth.commons.logging.Log;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.Arrays;
import java.util.List; import java.util.List;
public class ArchitectureElementData { public class ArchitectureElementData {
...@@ -176,8 +174,7 @@ public class ArchitectureElementData { ...@@ -176,8 +174,7 @@ public class ArchitectureElementData {
if (padding_type.equals(AllPredefinedLayers.PADDING_VALID)){ if (padding_type.equals(AllPredefinedLayers.PADDING_VALID)){
pad = 0; pad = 0;
} } else if (padding_type.equals(AllPredefinedLayers.PADDING_SAME)){
else if (padding_type.equals(AllPredefinedLayers.PADDING_SAME)){
pad = 1; pad = 1;
} }
......
...@@ -51,18 +51,18 @@ public class CNNArch2Caffe2 implements CNNArchGenerator{ ...@@ -51,18 +51,18 @@ public class CNNArch2Caffe2 implements CNNArchGenerator{
private boolean isSupportedLayer(ArchitectureElementSymbol element, LayerSupportChecker layerChecker){ private boolean isSupportedLayer(ArchitectureElementSymbol element, LayerSupportChecker layerChecker){
List<ArchitectureElementSymbol> constructLayerElemList; List<ArchitectureElementSymbol> constructLayerElemList;
if (!(element instanceof IOSymbol) && (element.getResolvedThis().get() instanceof CompositeElementSymbol)) if (!(element instanceof IOSymbol) && (element.getResolvedThis().get() instanceof CompositeElementSymbol)) {
{
constructLayerElemList = ((CompositeElementSymbol)element.getResolvedThis().get()).getElements(); constructLayerElemList = ((CompositeElementSymbol)element.getResolvedThis().get()).getElements();
for (ArchitectureElementSymbol constructedLayerElement : constructLayerElemList) { for (ArchitectureElementSymbol constructedLayerElement : constructLayerElemList) {
if (!isSupportedLayer(constructedLayerElement, layerChecker)) return false; if (!isSupportedLayer(constructedLayerElement, layerChecker)) {
return false;
}
} }
} }
if (!layerChecker.isSupported(element.toString())) { if (!layerChecker.isSupported(element.toString())) {
Log.error("Unsupported layer " + "'" + element.getName() + "'" + " for the backend CAFFE2."); Log.error("Unsupported layer " + "'" + element.getName() + "'" + " for the backend CAFFE2.");
return false; return false;
} } else {
else {
return true; return true;
} }
} }
...@@ -70,11 +70,18 @@ public class CNNArch2Caffe2 implements CNNArchGenerator{ ...@@ -70,11 +70,18 @@ public class CNNArch2Caffe2 implements CNNArchGenerator{
private boolean supportCheck(ArchitectureSymbol architecture){ private boolean supportCheck(ArchitectureSymbol architecture){
LayerSupportChecker layerChecker = new LayerSupportChecker(); LayerSupportChecker layerChecker = new LayerSupportChecker();
for (ArchitectureElementSymbol element : ((CompositeElementSymbol)architecture.getBody()).getElements()){ for (ArchitectureElementSymbol element : ((CompositeElementSymbol)architecture.getBody()).getElements()){
if(!isSupportedLayer(element, layerChecker)) return false; if(!isSupportedLayer(element, layerChecker)) {
return false;
}
} }
return true; return true;
} }
private static void quitGeneration(){
Log.error("Code generation is aborted");
System.exit(1);
}
public CNNArch2Caffe2() { public CNNArch2Caffe2() {
setGenerationTargetPath("./target/generated-sources-cnnarch/"); setGenerationTargetPath("./target/generated-sources-cnnarch/");
} }
...@@ -105,19 +112,17 @@ public class CNNArch2Caffe2 implements CNNArchGenerator{ ...@@ -105,19 +112,17 @@ public class CNNArch2Caffe2 implements CNNArchGenerator{
Optional<CNNArchCompilationUnitSymbol> compilationUnit = scope.resolve(rootModelName, CNNArchCompilationUnitSymbol.KIND); Optional<CNNArchCompilationUnitSymbol> compilationUnit = scope.resolve(rootModelName, CNNArchCompilationUnitSymbol.KIND);
if (!compilationUnit.isPresent()){ if (!compilationUnit.isPresent()){
Log.error("could not resolve architecture " + rootModelName); Log.error("could not resolve architecture " + rootModelName);
System.exit(1); quitGeneration();
} }
CNNArchCocos.checkAll(compilationUnit.get()); CNNArchCocos.checkAll(compilationUnit.get());
if (!supportCheck(compilationUnit.get().getArchitecture())){ if (!supportCheck(compilationUnit.get().getArchitecture())){
Log.error("Code generation aborted."); quitGeneration();
System.exit(1);
} }
try{ try{
generateFiles(compilationUnit.get().getArchitecture()); generateFiles(compilationUnit.get().getArchitecture());
} } catch (IOException e){
catch (IOException e){
Log.error(e.toString()); Log.error(e.toString());
} }
} }
...@@ -172,7 +177,7 @@ public class CNNArch2Caffe2 implements CNNArchGenerator{ ...@@ -172,7 +177,7 @@ public class CNNArch2Caffe2 implements CNNArchGenerator{
try { try {
generateFromFilecontentsMap(fileContentMap); generateFromFilecontentsMap(fileContentMap);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); Log.error("CMake file could not be generated" + e.getMessage());
} }
} }
...@@ -195,8 +200,8 @@ public class CNNArch2Caffe2 implements CNNArchGenerator{ ...@@ -195,8 +200,8 @@ public class CNNArch2Caffe2 implements CNNArchGenerator{
cMakeConfig.addCMakeCommand("set(LIBS ${LIBS} -lprotobuf -lglog -lgflags)"); cMakeConfig.addCMakeCommand("set(LIBS ${LIBS} -lprotobuf -lglog -lgflags)");
cMakeConfig.addCMakeCommand("find_package(CUDA)" + "\n" cMakeConfig.addCMakeCommand("find_package(CUDA)" + "\n"
+ "set(INCLUDE_DIRS ${INCLUDE_DIRS} ${CUDA_INCLUDE_DIRS})" + "\n" + "set(INCLUDE_DIRS ${INCLUDE_DIRS} ${CUDA_INCLUDE_DIRS})" + "\n"
+ "set(LIBS ${LIBS} ${CUDA_LIBRARIES} ${CUDA_curand_LIBRARY})" + "\n"); //Needed since CUDA cannot be found correctly (including CUDA_curand_LIBRARY) and as optional using CMakeFindModule + "set(LIBS ${LIBS} ${CUDA_LIBRARIES} ${CUDA_curand_LIBRARY})" + "\n");
//Needed since CUDA cannot be found correctly (including CUDA_curand_LIBRARY)
cMakeConfig.addCMakeCommand("if(CUDA_FOUND)" + "\n" + " set(LIBS ${LIBS} caffe2 caffe2_gpu)" cMakeConfig.addCMakeCommand("if(CUDA_FOUND)" + "\n" + " set(LIBS ${LIBS} caffe2 caffe2_gpu)"
+ "\n" + "else()" + "\n" + " set(LIBS ${LIBS} caffe2)" + "\n" + "endif()"); + "\n" + "else()" + "\n" + " set(LIBS ${LIBS} caffe2)" + "\n" + "endif()");
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
* ******************************************************************************* * *******************************************************************************
*/ */
package de.monticore.lang.monticar.cnnarch.caffe2generator; package de.monticore.lang.monticar.cnnarch.caffe2generator;
import de.se_rwth.commons.logging.Log;
import org.apache.commons.cli.*; import org.apache.commons.cli.*;
...@@ -73,13 +74,18 @@ public class CNNArch2Caffe2Cli { ...@@ -73,13 +74,18 @@ public class CNNArch2Caffe2Cli {
try { try {
cliArgs = parser.parse(options, args); cliArgs = parser.parse(options, args);
} catch (ParseException e) { } catch (ParseException e) {
System.err.println("argument parsing exception: " + e.getMessage()); Log.error("argument parsing exception: " + e.getMessage());
System.exit(1); quitGeneration();
return null; return null;
} }
return cliArgs; return cliArgs;
} }
private static void quitGeneration(){
Log.error("Code generation is aborted");
System.exit(1);
}
private static void runGenerator(CommandLine cliArgs) { private static void runGenerator(CommandLine cliArgs) {
Path modelsDirPath = Paths.get(cliArgs.getOptionValue(OPTION_MODELS_PATH.getOpt())); Path modelsDirPath = Paths.get(cliArgs.getOptionValue(OPTION_MODELS_PATH.getOpt()));
String rootModelName = cliArgs.getOptionValue(OPTION_ROOT_MODEL.getOpt()); String rootModelName = cliArgs.getOptionValue(OPTION_ROOT_MODEL.getOpt());
......
...@@ -95,8 +95,7 @@ public class CNNArchTemplateController { ...@@ -95,8 +95,7 @@ public class CNNArchTemplateController {
if (isSoftmaxOutput(layer) || isLogisticRegressionOutput(layer)){ if (isSoftmaxOutput(layer) || isLogisticRegressionOutput(layer)){
inputNames = getLayerInputs(layer.getInputElement().get()); inputNames = getLayerInputs(layer.getInputElement().get());
} } else {
else {
for (ArchitectureElementSymbol input : layer.getPrevious()) { for (ArchitectureElementSymbol input : layer.getPrevious()) {
if (input.getOutputTypes().size() == 1) { if (input.getOutputTypes().size() == 1) {
inputNames.add(getName(input)); inputNames.add(getName(input));
...@@ -146,12 +145,10 @@ public class CNNArchTemplateController { ...@@ -146,12 +145,10 @@ public class CNNArchTemplateController {
if (ioElement.isAtomic()){ if (ioElement.isAtomic()){
if (ioElement.isInput()){ if (ioElement.isInput()){
include(TEMPLATE_ELEMENTS_DIR_PATH, "Input", writer); include(TEMPLATE_ELEMENTS_DIR_PATH, "Input", writer);
} } else {
else {
include(TEMPLATE_ELEMENTS_DIR_PATH, "Output", writer); include(TEMPLATE_ELEMENTS_DIR_PATH, "Output", writer);
} }
} } else {
else {
include(ioElement.getResolvedThis().get(), writer); include(ioElement.getResolvedThis().get(), writer);
} }
...@@ -168,8 +165,7 @@ public class CNNArchTemplateController { ...@@ -168,8 +165,7 @@ public class CNNArchTemplateController {
String templateName = layer.getDeclaration().getName(); String templateName = layer.getDeclaration().getName();
include(TEMPLATE_ELEMENTS_DIR_PATH, templateName, writer); include(TEMPLATE_ELEMENTS_DIR_PATH, templateName, writer);
} }
} } else {
else {
include(layer.getResolvedThis().get(), writer); include(layer.getResolvedThis().get(), writer);
} }
...@@ -190,11 +186,9 @@ public class CNNArchTemplateController { ...@@ -190,11 +186,9 @@ public class CNNArchTemplateController {
public void include(ArchitectureElementSymbol architectureElement, Writer writer){ public void include(ArchitectureElementSymbol architectureElement, Writer writer){
if (architectureElement instanceof CompositeElementSymbol){ if (architectureElement instanceof CompositeElementSymbol){
include((CompositeElementSymbol) architectureElement, writer); include((CompositeElementSymbol) architectureElement, writer);
} } else if (architectureElement instanceof LayerSymbol){
else if (architectureElement instanceof LayerSymbol){
include((LayerSymbol) architectureElement, writer); include((LayerSymbol) architectureElement, writer);
} } else {
else {
include((IOSymbol) architectureElement, writer); include((IOSymbol) architectureElement, writer);
} }
} }
...@@ -207,15 +201,15 @@ public class CNNArchTemplateController { ...@@ -207,15 +201,15 @@ public class CNNArchTemplateController {
} }
public Map.Entry<String,String> process(String templateNameWithoutEnding, Target targetLanguage){ public Map.Entry<String,String> process(String templateNameWithoutEnding, Target targetLanguage){
StringWriter writer = new StringWriter(); StringWriter newWriter = new StringWriter();
this.mainTemplateNameWithoutEnding = templateNameWithoutEnding; this.mainTemplateNameWithoutEnding = templateNameWithoutEnding;
this.targetLanguage = targetLanguage; this.targetLanguage = targetLanguage;
this.writer = writer; this.writer = newWriter;
include("", templateNameWithoutEnding, writer); include("", templateNameWithoutEnding, newWriter);
String fileEnding = targetLanguage.toString(); String fileEnding = targetLanguage.toString();
String fileName = getFileNameWithoutEnding() + fileEnding; String fileName = getFileNameWithoutEnding() + fileEnding;
Map.Entry<String,String> fileContent = new AbstractMap.SimpleEntry<>(fileName, writer.toString()); Map.Entry<String,String> fileContent = new AbstractMap.SimpleEntry<>(fileName, newWriter.toString());
this.mainTemplateNameWithoutEnding = null; this.mainTemplateNameWithoutEnding = null;
this.targetLanguage = null; this.targetLanguage = null;
...@@ -271,12 +265,12 @@ public class CNNArchTemplateController { ...@@ -271,12 +265,12 @@ public class CNNArchTemplateController {
} }
private boolean isTOutput(Class inputPredefinedLayerClass, ArchitectureElementSymbol architectureElement){ private boolean isTOutput(Class inputPredefinedLayerClass, ArchitectureElementSymbol architectureElement){
if (architectureElement.isOutput()){ if (architectureElement.isOutput()
if (architectureElement.getInputElement().isPresent() && architectureElement.getInputElement().get() instanceof LayerSymbol){ && architectureElement.getInputElement().isPresent()
LayerSymbol inputLayer = (LayerSymbol) architectureElement.getInputElement().get(); && architectureElement.getInputElement().get() instanceof LayerSymbol){
if (inputPredefinedLayerClass.isInstance(inputLayer.getDeclaration())){ LayerSymbol inputLayer = (LayerSymbol) architectureElement.getInputElement().get();
return true; if (inputPredefinedLayerClass.isInstance(inputLayer.getDeclaration())){
} return true;
} }
} }
return false; return false;
......
...@@ -37,7 +37,9 @@ public class CNNTrain2Caffe2 implements CNNTrainGenerator { ...@@ -37,7 +37,9 @@ public class CNNTrain2Caffe2 implements CNNTrainGenerator {
it = configuration.getEntryMap().keySet().iterator(); it = configuration.getEntryMap().keySet().iterator();
while (it.hasNext()) { while (it.hasNext()) {
String key = it.next().toString(); String key = it.next().toString();
if (funcChecker.getUnsupportedElemList().contains(key)) it.remove(); if (funcChecker.getUnsupportedElemList().contains(key)) {
it.remove();
}
} }
} }
...@@ -52,12 +54,19 @@ public class CNNTrain2Caffe2 implements CNNTrainGenerator { ...@@ -52,12 +54,19 @@ public class CNNTrain2Caffe2 implements CNNTrainGenerator {
Iterator it = configuration.getOptimizer().getOptimizerParamMap().keySet().iterator(); Iterator it = configuration.getOptimizer().getOptimizerParamMap().keySet().iterator();
while (it.hasNext()) { while (it.hasNext()) {
String key = it.next().toString(); String key = it.next().toString();
if (funcChecker.getUnsupportedElemList().contains(key)) it.remove(); if (funcChecker.getUnsupportedElemList().contains(key)) {
it.remove();
}
} }
} }
} }
} }
private static void quitGeneration(){
Log.error("Code generation is aborted");
System.exit(1);
}
public CNNTrain2Caffe2() { public CNNTrain2Caffe2() {
setGenerationTargetPath("./target/generated-sources-cnnarch/"); setGenerationTargetPath("./target/generated-sources-cnnarch/");
} }
...@@ -89,7 +98,7 @@ public class CNNTrain2Caffe2 implements CNNTrainGenerator { ...@@ -89,7 +98,7 @@ public class CNNTrain2Caffe2 implements CNNTrainGenerator {
Optional<CNNTrainCompilationUnitSymbol> compilationUnit = scope.resolve(rootModelName, CNNTrainCompilationUnitSymbol.KIND); Optional<CNNTrainCompilationUnitSymbol> compilationUnit = scope.resolve(rootModelName, CNNTrainCompilationUnitSymbol.KIND);
if (!compilationUnit.isPresent()) { if (!compilationUnit.isPresent()) {
Log.error("could not resolve training configuration " + rootModelName); Log.error("could not resolve training configuration " + rootModelName);
System.exit(1); quitGeneration();
} }
setInstanceName(compilationUnit.get().getFullName()); setInstanceName(compilationUnit.get().getFullName());
CNNTrainCocos.checkAll(compilationUnit.get()); CNNTrainCocos.checkAll(compilationUnit.get());
...@@ -107,7 +116,7 @@ public class CNNTrain2Caffe2 implements CNNTrainGenerator { ...@@ -107,7 +116,7 @@ public class CNNTrain2Caffe2 implements CNNTrainGenerator {
genCPP.generateFile(new FileContent(fileContents.get(fileName), fileName)); genCPP.generateFile(new FileContent(fileContents.get(fileName), fileName));
} }
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); Log.error("CNNTrainer file could not be generated" + e.getMessage());
} }
} }
......
...@@ -96,8 +96,7 @@ public class ConfigurationData { ...@@ -96,8 +96,7 @@ public class ConfigurationData {
Class realClass = entry.getValue().getValue().getValue().getClass(); Class realClass = entry.getValue().getValue().getValue().getClass();
if (realClass == Boolean.class) { if (realClass == Boolean.class) {
valueAsString = (Boolean) entry.getValue().getValue().getValue() ? "True" : "False"; valueAsString = (Boolean) entry.getValue().getValue().getValue() ? "True" : "False";
} } else if (lrPolicyClasses.contains(realClass)) {
else if (lrPolicyClasses.contains(realClass)) {
valueAsString = "'" + valueAsString + "'"; valueAsString = "'" + valueAsString + "'";
} }
mapToStrings.put(paramName, valueAsString); mapToStrings.put(paramName, valueAsString);
......
...@@ -47,17 +47,14 @@ public class LayerNameCreator { ...@@ -47,17 +47,14 @@ public class LayerNameCreator {
protected int name(ArchitectureElementSymbol architectureElement, int stage, List<Integer> streamIndices){ protected int name(ArchitectureElementSymbol architectureElement, int stage, List<Integer> streamIndices){
if (architectureElement instanceof CompositeElementSymbol){ if (architectureElement instanceof CompositeElementSymbol){
return nameComposite((CompositeElementSymbol) architectureElement, stage, streamIndices); return nameComposite((CompositeElementSymbol) architectureElement, stage, streamIndices);
} } else{
else{
if (architectureElement.isAtomic()){ if (architectureElement.isAtomic()){
if (architectureElement.getMaxSerialLength().get() > 0){ if (architectureElement.getMaxSerialLength().get() > 0){
return add(architectureElement, stage, streamIndices); return add(architectureElement, stage, streamIndices);
} } else {
else {
return stage; return stage;
} }
} } else {
else {
ArchitectureElementSymbol resolvedElement = architectureElement.getResolvedThis().get(); ArchitectureElementSymbol resolvedElement = architectureElement.getResolvedThis().get();
return name(resolvedElement, stage, streamIndices); return name(resolvedElement, stage, streamIndices);
} }
...@@ -78,8 +75,7 @@ public class LayerNameCreator { ...@@ -78,8 +75,7 @@ public class LayerNameCreator {
streamIndices.remove(lastIndex); streamIndices.remove(lastIndex);
return Collections.max(endStages) + 1; return Collections.max(endStages) + 1;
} } else {
else {
int endStage = stage; int endStage = stage;
for (ArchitectureElementSymbol subElement : compositeElement.getElements()){ for (ArchitectureElementSymbol subElement : compositeElement.getElements()){
endStage = name(subElement, endStage, streamIndices); endStage = name(subElement, endStage, streamIndices);
...@@ -113,8 +109,7 @@ public class LayerNameCreator { ...@@ -113,8 +109,7 @@ public class LayerNameCreator {
name = name + "_" + arrayAccess + "_"; name = name + "_" + arrayAccess + "_";
} }
return name; return name;
} } else {
else {
return createBaseName(architectureElement) + stage + createStreamPostfix(streamIndices) + "_"; return createBaseName(architectureElement) + stage + createStreamPostfix(streamIndices) + "_";
} }
} }
...@@ -132,11 +127,9 @@ public class LayerNameCreator { ...@@ -132,11 +127,9 @@ public class LayerNameCreator {
} else { } else {
return layerDeclaration.getName().toLowerCase(); return layerDeclaration.getName().toLowerCase();
} }
} } else if (architectureElement instanceof CompositeElementSymbol){
else if (architectureElement instanceof CompositeElementSymbol){
return "group"; return "group";
} } else {
else {
return architectureElement.getName(); return architectureElement.getName();
} }
} }
......
...@@ -43,6 +43,11 @@ public class TemplateConfiguration { ...@@ -43,6 +43,11 @@ public class TemplateConfiguration {
configuration.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER); configuration.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
} }
private static void quitGeneration(){
Log.error("Code generation is aborted");
System.exit(1);
}
public Configuration getConfiguration() { public Configuration getConfiguration() {
return configuration; return configuration;
} }
...@@ -58,14 +63,12 @@ public class TemplateConfiguration { ...@@ -58,14 +63,12 @@ public class TemplateConfiguration {
try{ try{
Template template = TemplateConfiguration.get().getTemplate(templatePath); Template template = TemplateConfiguration.get().getTemplate(templatePath);
template.process(ftlContext, writer); template.process(ftlContext, writer);
} } catch (IOException e) {
catch (IOException e) {
Log.error("Freemarker could not find template " + templatePath + " :\n" + e.getMessage()); Log.error("Freemarker could not find template " + templatePath + " :\n" + e.getMessage());
System.exit(1); quitGeneration();
} } catch (TemplateException e){
catch (TemplateException e){
Log.error("An exception occured in template " + templatePath + " :\n" + e.getMessage()); Log.error("An exception occured in template " + templatePath + " :\n" + e.getMessage());
System.exit(1); quitGeneration();
} }
} }
......
...@@ -25,12 +25,14 @@ public class TrainParamSupportChecker implements CNNTrainVisitor { ...@@ -25,12 +25,14 @@ public class TrainParamSupportChecker implements CNNTrainVisitor {