2016-07-29 8 views
0

eine der beiden folgenden Funktionsdeklarationen in meiner Header-Datei verwendenSonarqube Blocker: "tm" in Funktionsdeklaration Mit

time_t MyFunction (tm* time);

time_t MyFunction (struct tm* time);

ich die folgende Sonar-Blocker Problem bekommen:

Ändern Sie den reservierten Namen "tm" in einen nicht reservierten Namen.

Ich habe versucht, <time.h> in der Kopfzeile, aber das ist nicht der Trick. Seltsamerweise hat die entsprechende Funktionsdefinition selbst kein solches Problem; Sonar beklagt sich nicht darüber.

Irgendwelche Gedanken, warum, und wie ich es umgehen könnte?

+0

Sie können eine Ignorierregel als letzten Ausweg –

+0

@adnankamili hinzufügen, auf die ich gut zurückgreifen kann. Gibt es eine Möglichkeit, eine bestimmte Zeile in C++ Sonar zu ignorieren? – splrs

Antwort

0

Sie schreiben nicht, wenn Sie C- oder C++ - Code kompilieren. Im letzteren Fall schlage ich vor, den Header zu verwenden und dann std::tm zu verwenden. Vielleicht hilft das für die Analyse. Wenn Sie noch auf Sonar-ignorieren die Linien zurückgreifen zu müssen, können Sie

time_t MyFunction (tm* time); // NOSONAR 

verwenden AFAIK funktioniert dies ohne weitere Konfiguration. Wir verwenden

//sonarqube ingore on 
time_t MyFunction (tm* time); 
//sonarqube ingore off 

, um Codeblöcke zu ignorieren. Dies kann jedoch eine Sonarqube-Konfiguration erfordern, um die Flagge bekannt zu machen. Wir verwenden die folgend in einem pom.xml, und es könnte in Ihrer Umgebung anders, aber ähnlich sein:

<sonar.issue.ignore.block>e1</sonar.issue.ignore.block> 
<sonar.issue.ignore.block.e1.beginBlockRegexp>sonarqube ignore on</sonar.issue.ignore.block.e1.beginBlockRegexp> 
<sonar.issue.ignore.block.e1.endBlockRegexp>sonarqube ignore off</sonar.issue.ignore.block.e1.endBlockRegexp> 

Leider SQ Dokumentation konzentriert sich mehr auf, wie Regeln und die Ausnahmen in der Projektkonfiguration zu behandeln, anstatt in Code, so dass diese Informationen nicht so einfach zu finden sind.

In Bezug auf Ihre andere Frage: In meiner Erfahrung wird SQ über einen Code Geruch wie bei Ihnen nur bei der Deklaration beschweren, so dass Sie nicht das gleiche bekommen Warnung in Ihrer c/cpp-Datei.