Skip to content

addede#34

Open
IrmaKarasoftic wants to merge 4 commits intomainfrom
directives
Open

addede#34
IrmaKarasoftic wants to merge 4 commits intomainfrom
directives

Conversation

@IrmaKarasoftic
Copy link
Owner

No description provided.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quality Gates: FAILED

  • Declining Code Health: 2 findings(s) 🚩
  • Improving Code Health: 0 findings(s) ✅
  • Affected Hotspots: 0 files(s) 🔥

Recommended Review Level: Detailed -- Inspect the code that degrades in code health.
View detailed results in CodeScene

🚩 Negative Code Health Impact (highest to lowest):

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quality Gates: FAILED

  • Declining Code Health: 2 findings(s) 🚩
  • Improving Code Health: 1 findings(s) ✅
  • Affected Hotspots: 0 files(s) 🔥

Recommended Review Level: Detailed -- Inspect the code that degrades in code health.
View detailed results in CodeScene

🚩 Negative Code Health Impact (highest to lowest):

✅ Positive Code Health Impact (highest to lowest):

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quality Gates: FAILED

  • Declining Code Health: 3 findings(s) 🚩
  • Improving Code Health: 1 findings(s) ✅
  • Affected Hotspots: 0 files(s) 🔥

Recommended Review Level: Detailed -- Inspect the code that degrades in code health.
View detailed results in CodeScene

🚩 Negative Code Health Impact (highest to lowest):

✅ Positive Code Health Impact (highest to lowest):

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quality Gates: FAILED

  • Declining Code Health: 3 findings(s) 🚩
  • Improving Code Health: 1 findings(s) ✅
  • Affected Hotspots: 0 files(s) 🔥

Recommended Review Level: Detailed -- Inspect the code that degrades in code health.
View detailed results in CodeScene

🚩 Negative Code Health Impact (highest to lowest):

✅ Positive Code Health Impact (highest to lowest):

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quality Gates: FAILED

  • Declining Code Health: 3 findings(s) 🚩
  • Improving Code Health: 1 findings(s) ✅
  • Affected Hotspots: 0 files(s) 🔥

Recommended Review Level: Detailed -- Inspect the code that degrades in code health.
View detailed results in CodeScene

🚩 Negative Code Health Impact (highest to lowest):

✅ Positive Code Health Impact (highest to lowest):

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quality Gates: FAILED

  • Declining Code Health: 3 findings(s) 🚩
  • Improving Code Health: 1 findings(s) ✅
  • Affected Hotspots: 0 files(s) 🔥

Recommended Review Level: Detailed -- Inspect the code that degrades in code health.
View detailed results in CodeScene

🚩 Negative Code Health Impact (highest to lowest):

✅ Positive Code Health Impact (highest to lowest):

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quality Gates: FAILED

  • Declining Code Health: 3 findings(s) 🚩
  • Improving Code Health: 1 findings(s) ✅
  • Affected Hotspots: 0 files(s) 🔥

Recommended Review Level: Detailed -- Inspect the code that degrades in code health.
View detailed results in CodeScene

🚩 Negative Code Health Impact (highest to lowest):

✅ Positive Code Health Impact (highest to lowest):

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quality Gates: FAILED

  • Declining Code Health: 3 findings(s) 🚩
  • Improving Code Health: 1 findings(s) ✅
  • Affected Hotspots: 0 files(s) 🔥

Recommended Review Level: Detailed -- Inspect the code that degrades in code health.
View detailed results in CodeScene

🚩 Negative Code Health Impact (highest to lowest):

✅ Positive Code Health Impact (highest to lowest):

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quality Gates: FAILED

  • Declining Code Health: 3 findings(s) 🚩
  • Improving Code Health: 1 findings(s) ✅
  • Affected Hotspots: 0 files(s) 🔥

Recommended Review Level: Detailed -- Inspect the code that degrades in code health.
View detailed results in CodeScene

🚩 Negative Code Health Impact (highest to lowest):

✅ Positive Code Health Impact (highest to lowest):

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quality Gates: FAILED

  • Declining Code Health: 3 findings(s) 🚩
  • Improving Code Health: 1 findings(s) ✅
  • Affected Hotspots: 0 files(s) 🔥

Recommended Review Level: Detailed -- Inspect the code that degrades in code health.
View detailed results in CodeScene

🚩 Negative Code Health Impact (highest to lowest):

✅ Positive Code Health Impact (highest to lowest):

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Health Quality Gates: FAILED

  • Declining Code Health: 3 findings(s) 🚩
  • Improving Code Health: 1 findings(s) ✅
  • Affected Hotspots: 0 files(s) 🔥

Recommended Review Level: Detailed -- Inspect the code that degrades in code health.
View detailed results in CodeScene

🚩 Declining Code Health (highest to lowest):

✅ Improving Code Health:

ℹ️ Added Directives

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Health Quality Gates: FAILED

  • Declining Code Health: 3 findings(s) 🚩
  • Improving Code Health: 1 findings(s) ✅
  • Affected Hotspots: 0 files(s) 🔥

Recommended Review Level: Detailed -- Inspect the code that degrades in code health.
View detailed results in CodeScene

🚩 Declining Code Health (highest to lowest):

✅ Improving Code Health:

ℹ️ Added Directives

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Health Quality Gates: FAILED

  • Declining Code Health: 3 findings(s) 🚩
  • Improving Code Health: 1 findings(s) ✅
  • Affected Hotspots: 0 files(s) 🔥

Recommended Review Level: Detailed -- Inspect the code that degrades in code health.
View detailed results in CodeScene

🚩 Declining Code Health (highest to lowest):

✅ Improving Code Health:

ℹ️ Added Directives

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Health Quality Gates: FAILED

  • Declining Code Health: 3 findings(s) 🚩
  • Improving Code Health: 1 findings(s) ✅
  • Affected Hotspots: 0 files(s) 🔥

Recommended Review Level: Detailed -- Inspect the code that degrades in code health.
View detailed results in CodeScene

🚩 Declining Code Health (highest to lowest):

✅ Improving Code Health:

ℹ️ Added Directives

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Health Quality Gates: FAILED

  • Declining Code Health: 3 findings(s) 🚩
  • Improving Code Health: 1 findings(s) ✅
  • Affected Hotspots: 0 files(s) 🔥

Recommended Review Level: Detailed -- Inspect the code that degrades in code health.
View detailed results in CodeScene

🚩 Declining Code Health (highest to lowest):

✅ Improving Code Health:

ℹ️ Added Directives

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Health Quality Gates: FAILED

  • Declining Code Health: 3 findings(s) 🚩
  • Improving Code Health: 1 findings(s) ✅
  • Affected Hotspots: 0 files(s) 🔥

Recommended Review Level: Detailed -- Inspect the code that degrades in code health.
View detailed results in CodeScene

🚩 Declining Code Health (highest to lowest):

✅ Improving Code Health:

ℹ️ Added Directives

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Health Quality Gates: FAILED

  • Declining Code Health: 3 findings(s) 🚩
  • Improving Code Health: 1 findings(s) ✅
  • Affected Hotspots: 0 files(s) 🔥

Recommended Review Level: Detailed -- Inspect the code that degrades in code health.
View detailed results in CodeScene

🚩 Declining Code Health (highest to lowest):

✅ Improving Code Health:

ℹ️ Added Directives

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Health Quality Gates: FAILED

Change in average Code Health of affected files: -1.26 (4.74 -> 3.48)

  • Declining Code Health: 9 findings(s) 🚩
  • Improving Code Health: 1 findings(s) ✅
  • Affected Hotspots: 1 files(s) 🔥

View detailed results in CodeScene

Comment on lines +235 to +377
public bool SomeOtherMethod(string word, List<string> synonyms)
{
try
{
if (word == "A")
{

}
else if (word.Contains("B"))
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word.Contains("B"))
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word.Contains("B"))
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{

}
}
}
}
else if (word == "BB")
{

}
}
}
}
else if (word == "BB")
{

}
}
}
}
else if (word == "C")
{

}
//Remove all empty strings, or synonyms that are equal to word, and get Distinct values
synonyms.RemoveAll(s => string.IsNullOrWhiteSpace(s) || s == word);
synonyms = synonyms.Distinct().ToList();

if (word == null || synonyms.Count == 0) return false;

//If the word that is a synonym already exists, get the ID. If not, add it
var synonymsFromCache = _words.Where(x => synonyms.Contains(x.WordString.ToLower())).ToList();
var synonymIds = synonymsFromCache.Select(x => x.Id).ToList();

//Get synonyms that are not already in cache
var synonymsNotInCache = synonyms.Where(s => !synonymsFromCache.Select(x => x.WordString).Contains(s));

//Add those synonyms
var (newSynonymIds, nextId) = AddWordsToCache(_words.Count + 1, synonymIds, synonymsNotInCache);

//Now we have a list of all synonyms, new and old
var allSynonymIds = synonymIds.Concat(newSynonymIds).ToList();

//Check if word already exists
var existingWord = _words.FirstOrDefault(x => x.WordString == word.ToLower());

//If it doesn't, add the word and synonyms
if (existingWord == null)
{
//Add synonyms of synonyms
synonymsFromCache.ForEach(x => allSynonymIds.AddRange(x.SynonymIds));

//Add new word and bind synonyms
_words.Add(new Word() { Id = nextId, WordString = word.ToLower(), SynonymIds = allSynonymIds.ToList() });
allSynonymIds.Add(nextId);
}
else
{
//If it does, hook only synonyms that aren't already in the list
HookTheNewSynonymsToWord(existingWord, newSynonymIds);

//Add the word and its synonyms to all synonyms list
allSynonymIds.Add(existingWord.Id);
allSynonymIds.AddRange(existingWord.SynonymIds);
}
allSynonymIds = allSynonymIds.ToList();

//Update newly added synonyms to have the references to all words
UpdateAllSynonymsOfSynonyms(allSynonymIds);

//Update the cache
_cache.Set(wordListCacheKey, _words);
return true;

}
catch (Exception)
{
return false;
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ New issue: Code Duplication
The module contains 2 functions with similar structure: Add,SomeOtherMethod

Suppress

return synonyms;
}

// @CodeScene(disable:"Complex Method")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ New issue: Complex Method
Add has a cyclomatic complexity of 29, threshold = 9

Suppress

return synonyms;
}

// @CodeScene(disable:"Complex Method")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No longer an issue: Large Method
Add is no longer above the threshold for lines of code

Comment on lines +235 to +377
public bool SomeOtherMethod(string word, List<string> synonyms)
{
try
{
if (word == "A")
{

}
else if (word.Contains("B"))
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word.Contains("B"))
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word.Contains("B"))
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{

}
}
}
}
else if (word == "BB")
{

}
}
}
}
else if (word == "BB")
{

}
}
}
}
else if (word == "C")
{

}
//Remove all empty strings, or synonyms that are equal to word, and get Distinct values
synonyms.RemoveAll(s => string.IsNullOrWhiteSpace(s) || s == word);
synonyms = synonyms.Distinct().ToList();

if (word == null || synonyms.Count == 0) return false;

//If the word that is a synonym already exists, get the ID. If not, add it
var synonymsFromCache = _words.Where(x => synonyms.Contains(x.WordString.ToLower())).ToList();
var synonymIds = synonymsFromCache.Select(x => x.Id).ToList();

//Get synonyms that are not already in cache
var synonymsNotInCache = synonyms.Where(s => !synonymsFromCache.Select(x => x.WordString).Contains(s));

//Add those synonyms
var (newSynonymIds, nextId) = AddWordsToCache(_words.Count + 1, synonymIds, synonymsNotInCache);

//Now we have a list of all synonyms, new and old
var allSynonymIds = synonymIds.Concat(newSynonymIds).ToList();

//Check if word already exists
var existingWord = _words.FirstOrDefault(x => x.WordString == word.ToLower());

//If it doesn't, add the word and synonyms
if (existingWord == null)
{
//Add synonyms of synonyms
synonymsFromCache.ForEach(x => allSynonymIds.AddRange(x.SynonymIds));

//Add new word and bind synonyms
_words.Add(new Word() { Id = nextId, WordString = word.ToLower(), SynonymIds = allSynonymIds.ToList() });
allSynonymIds.Add(nextId);
}
else
{
//If it does, hook only synonyms that aren't already in the list
HookTheNewSynonymsToWord(existingWord, newSynonymIds);

//Add the word and its synonyms to all synonyms list
allSynonymIds.Add(existingWord.Id);
allSynonymIds.AddRange(existingWord.SynonymIds);
}
allSynonymIds = allSynonymIds.ToList();

//Update newly added synonyms to have the references to all words
UpdateAllSynonymsOfSynonyms(allSynonymIds);

//Update the cache
_cache.Set(wordListCacheKey, _words);
return true;

}
catch (Exception)
{
return false;
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ New issue: Large Method
SomeOtherMethod has 104 lines, threshold = 70

Comment on lines +235 to +377
public bool SomeOtherMethod(string word, List<string> synonyms)
{
try
{
if (word == "A")
{

}
else if (word.Contains("B"))
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word.Contains("B"))
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word.Contains("B"))
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{

}
}
}
}
else if (word == "BB")
{

}
}
}
}
else if (word == "BB")
{

}
}
}
}
else if (word == "C")
{

}
//Remove all empty strings, or synonyms that are equal to word, and get Distinct values
synonyms.RemoveAll(s => string.IsNullOrWhiteSpace(s) || s == word);
synonyms = synonyms.Distinct().ToList();

if (word == null || synonyms.Count == 0) return false;

//If the word that is a synonym already exists, get the ID. If not, add it
var synonymsFromCache = _words.Where(x => synonyms.Contains(x.WordString.ToLower())).ToList();
var synonymIds = synonymsFromCache.Select(x => x.Id).ToList();

//Get synonyms that are not already in cache
var synonymsNotInCache = synonyms.Where(s => !synonymsFromCache.Select(x => x.WordString).Contains(s));

//Add those synonyms
var (newSynonymIds, nextId) = AddWordsToCache(_words.Count + 1, synonymIds, synonymsNotInCache);

//Now we have a list of all synonyms, new and old
var allSynonymIds = synonymIds.Concat(newSynonymIds).ToList();

//Check if word already exists
var existingWord = _words.FirstOrDefault(x => x.WordString == word.ToLower());

//If it doesn't, add the word and synonyms
if (existingWord == null)
{
//Add synonyms of synonyms
synonymsFromCache.ForEach(x => allSynonymIds.AddRange(x.SynonymIds));

//Add new word and bind synonyms
_words.Add(new Word() { Id = nextId, WordString = word.ToLower(), SynonymIds = allSynonymIds.ToList() });
allSynonymIds.Add(nextId);
}
else
{
//If it does, hook only synonyms that aren't already in the list
HookTheNewSynonymsToWord(existingWord, newSynonymIds);

//Add the word and its synonyms to all synonyms list
allSynonymIds.Add(existingWord.Id);
allSynonymIds.AddRange(existingWord.SynonymIds);
}
allSynonymIds = allSynonymIds.ToList();

//Update newly added synonyms to have the references to all words
UpdateAllSynonymsOfSynonyms(allSynonymIds);

//Update the cache
_cache.Set(wordListCacheKey, _words);
return true;

}
catch (Exception)
{
return false;
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ New issue: Bumpy Road Ahead
SomeOtherMethod has 13 blocks with nested conditional logic. Any nesting of 2 or deeper is considered. Threshold is one single, nested block per function

Suppress

Comment on lines +161 to +303
public bool SomeOtherMethod(string word, List<string> synonyms)
{
try
{
if (word == "A")
{

}
else if (word.Contains("B"))
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word.Contains("B"))
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word.Contains("B"))
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{

}
}
}
}
else if (word == "BB")
{

}
}
}
}
else if (word == "BB")
{

}
}
}
}
else if (word == "C")
{

}
//Remove all empty strings, or synonyms that are equal to word, and get Distinct values
synonyms.RemoveAll(s => string.IsNullOrWhiteSpace(s) || s == word);
synonyms = synonyms.Distinct().ToList();

if (word == null || synonyms.Count == 0) return false;

//If the word that is a synonym already exists, get the ID. If not, add it
var synonymsFromCache = _words.Where(x => synonyms.Contains(x.WordString.ToLower())).ToList();
var synonymIds = synonymsFromCache.Select(x => x.Id).ToList();

//Get synonyms that are not already in cache
var synonymsNotInCache = synonyms.Where(s => !synonymsFromCache.Select(x => x.WordString).Contains(s));

//Add those synonyms
var (newSynonymIds, nextId) = AddWordsToCache(_words.Count + 1, synonymIds, synonymsNotInCache);

//Now we have a list of all synonyms, new and old
var allSynonymIds = synonymIds.Concat(newSynonymIds).ToList();

//Check if word already exists
var existingWord = _words.FirstOrDefault(x => x.WordString == word.ToLower());

//If it doesn't, add the word and synonyms
if (existingWord == null)
{
//Add synonyms of synonyms
synonymsFromCache.ForEach(x => allSynonymIds.AddRange(x.SynonymIds));

//Add new word and bind synonyms
_words.Add(new Word() { Id = nextId, WordString = word.ToLower(), SynonymIds = allSynonymIds.ToList() });
allSynonymIds.Add(nextId);
}
else
{
//If it does, hook only synonyms that aren't already in the list
HookTheNewSynonymsToWord(existingWord, newSynonymIds);

//Add the word and its synonyms to all synonyms list
allSynonymIds.Add(existingWord.Id);
allSynonymIds.AddRange(existingWord.SynonymIds);
}
allSynonymIds = allSynonymIds.ToList();

//Update newly added synonyms to have the references to all words
UpdateAllSynonymsOfSynonyms(allSynonymIds);

//Update the cache
_cache.Set(wordListCacheKey, _words);
return true;

}
catch (Exception)
{
return false;
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ New issue: Large Method
SomeOtherMethod has 104 lines, threshold = 70

Suppress

Comment on lines +161 to +303
public bool SomeOtherMethod(string word, List<string> synonyms)
{
try
{
if (word == "A")
{

}
else if (word.Contains("B"))
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word.Contains("B"))
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word.Contains("B"))
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{

}
}
}
}
else if (word == "BB")
{

}
}
}
}
else if (word == "BB")
{

}
}
}
}
else if (word == "C")
{

}
//Remove all empty strings, or synonyms that are equal to word, and get Distinct values
synonyms.RemoveAll(s => string.IsNullOrWhiteSpace(s) || s == word);
synonyms = synonyms.Distinct().ToList();

if (word == null || synonyms.Count == 0) return false;

//If the word that is a synonym already exists, get the ID. If not, add it
var synonymsFromCache = _words.Where(x => synonyms.Contains(x.WordString.ToLower())).ToList();
var synonymIds = synonymsFromCache.Select(x => x.Id).ToList();

//Get synonyms that are not already in cache
var synonymsNotInCache = synonyms.Where(s => !synonymsFromCache.Select(x => x.WordString).Contains(s));

//Add those synonyms
var (newSynonymIds, nextId) = AddWordsToCache(_words.Count + 1, synonymIds, synonymsNotInCache);

//Now we have a list of all synonyms, new and old
var allSynonymIds = synonymIds.Concat(newSynonymIds).ToList();

//Check if word already exists
var existingWord = _words.FirstOrDefault(x => x.WordString == word.ToLower());

//If it doesn't, add the word and synonyms
if (existingWord == null)
{
//Add synonyms of synonyms
synonymsFromCache.ForEach(x => allSynonymIds.AddRange(x.SynonymIds));

//Add new word and bind synonyms
_words.Add(new Word() { Id = nextId, WordString = word.ToLower(), SynonymIds = allSynonymIds.ToList() });
allSynonymIds.Add(nextId);
}
else
{
//If it does, hook only synonyms that aren't already in the list
HookTheNewSynonymsToWord(existingWord, newSynonymIds);

//Add the word and its synonyms to all synonyms list
allSynonymIds.Add(existingWord.Id);
allSynonymIds.AddRange(existingWord.SynonymIds);
}
allSynonymIds = allSynonymIds.ToList();

//Update newly added synonyms to have the references to all words
UpdateAllSynonymsOfSynonyms(allSynonymIds);

//Update the cache
_cache.Set(wordListCacheKey, _words);
return true;

}
catch (Exception)
{
return false;
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ New issue: Bumpy Road Ahead
SomeOtherMethod has 13 blocks with nested conditional logic. Any nesting of 2 or deeper is considered. Threshold is one single, nested block per function

Suppress

Comment on lines +306 to +338
public bool AddTest(string word)
{
try
{
if (word == "A")
{

}
else if (word.Contains("B"))
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "A")
{

}
}
}
else if (word == "C")
{

}
return true;
}
catch (Exception)
{
return false;
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ New issue: Bumpy Road Ahead
AddTest has 3 blocks with nested conditional logic. Any nesting of 2 or deeper is considered. Threshold is one single, nested block per function

Suppress

Comment on lines +161 to +303
public bool SomeOtherMethod(string word, List<string> synonyms)
{
try
{
if (word == "A")
{

}
else if (word.Contains("B"))
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word.Contains("B"))
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word.Contains("B"))
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "BA")
{

}
else if (word == "BB")
{

}
}
}
}
else if (word == "BB")
{

}
}
}
}
else if (word == "BB")
{

}
}
}
}
else if (word == "C")
{

}
//Remove all empty strings, or synonyms that are equal to word, and get Distinct values
synonyms.RemoveAll(s => string.IsNullOrWhiteSpace(s) || s == word);
synonyms = synonyms.Distinct().ToList();

if (word == null || synonyms.Count == 0) return false;

//If the word that is a synonym already exists, get the ID. If not, add it
var synonymsFromCache = _words.Where(x => synonyms.Contains(x.WordString.ToLower())).ToList();
var synonymIds = synonymsFromCache.Select(x => x.Id).ToList();

//Get synonyms that are not already in cache
var synonymsNotInCache = synonyms.Where(s => !synonymsFromCache.Select(x => x.WordString).Contains(s));

//Add those synonyms
var (newSynonymIds, nextId) = AddWordsToCache(_words.Count + 1, synonymIds, synonymsNotInCache);

//Now we have a list of all synonyms, new and old
var allSynonymIds = synonymIds.Concat(newSynonymIds).ToList();

//Check if word already exists
var existingWord = _words.FirstOrDefault(x => x.WordString == word.ToLower());

//If it doesn't, add the word and synonyms
if (existingWord == null)
{
//Add synonyms of synonyms
synonymsFromCache.ForEach(x => allSynonymIds.AddRange(x.SynonymIds));

//Add new word and bind synonyms
_words.Add(new Word() { Id = nextId, WordString = word.ToLower(), SynonymIds = allSynonymIds.ToList() });
allSynonymIds.Add(nextId);
}
else
{
//If it does, hook only synonyms that aren't already in the list
HookTheNewSynonymsToWord(existingWord, newSynonymIds);

//Add the word and its synonyms to all synonyms list
allSynonymIds.Add(existingWord.Id);
allSynonymIds.AddRange(existingWord.SynonymIds);
}
allSynonymIds = allSynonymIds.ToList();

//Update newly added synonyms to have the references to all words
UpdateAllSynonymsOfSynonyms(allSynonymIds);

//Update the cache
_cache.Set(wordListCacheKey, _words);
return true;

}
catch (Exception)
{
return false;
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ New issue: Deep, Nested Complexity
SomeOtherMethod has a nested complexity depth of 20, threshold = 4

Suppress

Comment on lines +306 to +338
public bool AddTest(string word)
{
try
{
if (word == "A")
{

}
else if (word.Contains("B"))
{
if (word == "BA")
{

}
else if (word == "BB")
{
if (word == "A")
{

}
}
}
else if (word == "C")
{

}
return true;
}
catch (Exception)
{
return false;
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ New issue: Deep, Nested Complexity
AddTest has a nested complexity depth of 5, threshold = 4

Suppress

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant